| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- name: Sync with upstream
-
- on:
- schedule:
- - cron: "0 8 1 * *"
- workflow_dispatch:
-
- jobs:
- sync:
- runs-on: ubuntu-latest
- permissions:
- contents: write
- issues: write
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Add upstream remote
- run: git remote add upstream https://github.com/9seconds/mtg.git
-
- - name: Fetch upstream
- run: git fetch upstream
-
- - name: Check for new commits
- id: check
- run: |
- COUNT=$(git rev-list --count HEAD..upstream/master)
- echo "count=$COUNT" >> "$GITHUB_OUTPUT"
- echo "Upstream is $COUNT commits ahead"
-
- - name: Merge upstream
- if: steps.check.outputs.count != '0'
- id: merge
- run: |
- git config user.name "github-actions[bot]"
- git config user.email "github-actions[bot]@users.noreply.github.com"
- git merge upstream/master --no-edit
- continue-on-error: true
-
- - name: Push if merge succeeded
- if: steps.check.outputs.count != '0' && steps.merge.outcome == 'success'
- run: git push origin master
-
- - name: Create issue on conflict
- if: steps.merge.outcome == 'failure'
- uses: actions/github-script@v7
- with:
- script: |
- await github.rest.issues.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- title: 'Upstream sync failed — merge conflict',
- body: 'Automatic merge from `9seconds/mtg:master` failed due to conflicts.\n\nResolve manually:\n```\ngit fetch upstream\ngit merge upstream/master\n# fix conflicts\ngit push origin master\n```',
- labels: ['sync']
- });
|