name: Update .app-headers in /misc on: pull_request: types: - closed branches: - main # Stellen sicher, dass nur gemergte PRs den Workflow auslösen # Triggern nur wenn der PR gemerged wurde if: github.event.pull_request.merged == true schedule: - cron: "59 23 * * *" # Führen den Workflow täglich um 23:59 UTC aus workflow_dispatch: jobs: update-and-create-pr: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: # Step 1: Checkout repository - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 # Fetch all branches for full context # Step 2: Set up Git user - name: Configure Git user run: | git config --global user.name "GitHub Actions" git config --global user.email "actions@github.com" # Step 3: Check or create update-app-headers branch - name: Check or create update-app-headers branch run: | git fetch origin if git show-ref --quiet refs/heads/update-app-headers; then echo "Switching to 'update-app-headers' branch." git checkout update-app-headers else echo "Creating 'update-app-headers' branch." git checkout -b update-app-headers origin/main fi # Step 4: Merge main into update-app-headers - name: Merge main into update-app-headers run: | git merge origin/main --no-edit || echo "No changes to merge from main." # Step 5: Ensure .app-headers file exists - name: Ensure .app-headers file exists run: | if [ ! -f ".app-headers" ]; then echo "Creating .app-headers file." echo "Generated by CI on $(date)" > .app-headers else echo ".app-headers file already exists." fi # Step 6: Commit and push changes (if any) - name: Commit and push changes run: | git diff --quiet -- .app-headers || git commit -am "[core]: update .app-headers to latest version" git push origin update-app-headers --force # Step 7: Create Pull Request if changes detected - name: Create Pull Request if changes detected env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | PR_EXISTS=$(gh pr list --head "update-app-headers" | grep -o '[0-9]\+') if [ -z "$PR_EXISTS" ]; then echo "Creating a new PR." gh pr create --title "[core]: update .app-headers to latest version" \ --body "This PR automatically updates the .app-headers file." \ --head update-app-headers \ --base main else echo "PR already exists." fi # Step 8: Automatically merge PR - name: Automatically merge PR env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | echo "Attempting to merge PR." PR_NUMBER=$(gh pr list --head "update-app-headers" | grep -o '[0-9]\+') if [ -n "$PR_NUMBER" ]; then gh pr merge "$PR_NUMBER" --merge --admin --delete-branch echo "PR merged successfully." else echo "No PR found to merge." fi # Step 9: Final status output - name: Output final status run: | echo "Workflow completed successfully. Branch and PR status updated."