name: Update Laws from RSS on: schedule: # Täglich um 02:00 UTC (03:00 MEZ / 04:00 MESZ) - cron: '0 2 * * *' # Manueller Trigger für Tests workflow_dispatch: jobs: update: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 # Vollständige Historie für Git-Operationen persist-credentials: true # Credentials für Push speichern - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install --upgrade pip pip install -r requirements.txt - name: Run update script run: | python3 update_laws.py continue-on-error: true # Weiterlaufen auch bei Fehlern - name: Convert XML to Markdown if: success() || failure() # Immer ausführen, auch wenn Update fehlschlug run: | python3 xml_to_markdown.py --prod || echo "Konvertierung fehlgeschlagen oder keine Änderungen" continue-on-error: true - name: Configure Git run: | git config --global user.name 'LawGit Bot' git config --global user.email 'bot@git.coded.law' git config --global init.defaultBranch main - name: Check for changes id: check_changes run: | git add -A if git diff --staged --quiet; then echo "changed=false" >> $GITHUB_OUTPUT echo "Keine Änderungen gefunden" else echo "changed=true" >> $GITHUB_OUTPUT echo "Änderungen gefunden" git status fi - name: Commit and push changes if: steps.check_changes.outputs.changed == 'true' run: | git commit -m "Daily law updates from RSS - $(date +'%Y-%m-%d %H:%M:%S UTC')" || exit 0 git push origin main || echo "Push fehlgeschlagen" - name: Summary if: always() run: | echo "## Update-Zusammenfassung" echo "- Workflow ausgeführt: $(date)" if [ "${{ steps.check_changes.outputs.changed }}" == "true" ]; then echo "- ✅ Änderungen wurden committed und gepusht" else echo "- ℹ️ Keine Änderungen gefunden" fi