Sync main to next #768
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Sync main to next | |
| on: | |
| schedule: | |
| - cron: '*/10 * * * *' | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| concurrency: | |
| group: sync-main-to-next | |
| cancel-in-progress: false | |
| jobs: | |
| sync: | |
| name: Merge main into next | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout next | |
| uses: actions/checkout@v5 | |
| with: | |
| ref: next | |
| fetch-depth: 0 | |
| - name: Merge main into next | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| git config user.name 'github-actions[bot]' | |
| git config user.email '41898282+github-actions[bot]@users.noreply.github.com' | |
| git fetch origin main next | |
| if git merge --no-edit origin/main; then | |
| git push origin HEAD:next | |
| exit 0 | |
| fi | |
| conflicts=$(git diff --name-only --diff-filter=U) | |
| git merge --abort | |
| if [ -z "$conflicts" ]; then | |
| echo 'The merge failed without conflicts, so no pull request was created.' | |
| exit 1 | |
| fi | |
| sync_branch='automation/sync-main-to-next' | |
| existing_pr=$(gh pr list --base next --head "$sync_branch" --state open --json url --jq '.[0].url') | |
| if [ -n "$existing_pr" ]; then | |
| echo "A main to next pull request already exists: $existing_pr" | |
| else | |
| git push --force origin origin/main:"refs/heads/$sync_branch" | |
| gh pr create \ | |
| --base next \ | |
| --head "$sync_branch" \ | |
| --title 'chore: merge main into next' \ | |
| --body 'This pull request was created automatically because main could not be merged into next without conflicts. Resolve conflicts on this temporary branch; never update main with next.' | |
| fi | |
| echo 'main could not be merged into next without conflicts.' | |
| exit 1 |