Files
pezkuwi-subquery/.github/workflows/auto-merge.yml
T
Satoshi Qazi Muhammed b44b84f0a3 ci: let the master-to-main merge wait for every required check
The auto-merge job fires when CI finishes, but Code Quality, Security and
CodeQL can still be running then. Once main requires those checks, a direct
merge at that moment is refused and nothing would retry it. Try the merge,
and if the branch rules do not allow it yet, hand it to GitHub auto-merge.
2026-10-12 11:40:45 +04:00

55 lines
1.6 KiB
YAML

name: Auto Merge
on:
workflow_run:
workflows: ["CI"]
types: [completed]
jobs:
auto-merge:
runs-on: ubuntu-latest
if: >
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.event == 'pull_request'
permissions:
contents: write
pull-requests: write
steps:
- name: Find and merge master → main PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
HEAD_BRANCH="${{ github.event.workflow_run.head_branch }}"
echo "Workflow ran on branch: $HEAD_BRANCH"
if [ "$HEAD_BRANCH" != "master" ]; then
echo "Not a master branch PR, skipping"
exit 0
fi
PR_NUMBER=$(gh pr list \
--repo "$GITHUB_REPOSITORY" \
--base main \
--head master \
--state open \
--json number \
--jq '.[0].number')
if [ -z "$PR_NUMBER" ]; then
echo "No open PR from master to main found, skipping"
exit 0
fi
# CI finishing does not mean every required check has: Code Quality,
# Security and CodeQL may still be running. Merge now if the branch
# rules allow it, otherwise let GitHub merge once they pass.
echo "Merging PR #$PR_NUMBER"
gh pr merge "$PR_NUMBER" \
--repo "$GITHUB_REPOSITORY" \
--merge \
--delete-branch=false \
|| gh pr merge "$PR_NUMBER" \
--repo "$GITHUB_REPOSITORY" \
--merge \
--auto