Skip to content

Commit dd93974

Browse files
committed
fix(auto-merge): wait for codex + copilot reviews before enabling
Previous trigger fired on pull_request: [opened], which raced ahead of asynchronous bot reviews — auto-merge enabled within 9 seconds, required CI completed in 2 minutes, but Copilot/codex reviews arrived later. PRs merged before any review existed (PR 417 confirmed; PR 204 hit the same path on AgentLint). Switch to on: pull_request_review: [submitted] and gate auto-merge enablement on both required bot reviewers having submitted at least one review. Idempotent — re-firing on later reviews skips when auto-merge is already enabled.
1 parent e3ad8a6 commit dd93974

1 file changed

Lines changed: 38 additions & 4 deletions

File tree

.github/workflows/auto-merge.yml

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
name: Auto merge
22

3+
# Trigger only after a review is submitted. We then check whether both
4+
# required bot reviewers (codex + copilot) have reviewed; if so, enable
5+
# auto-merge so GitHub finishes the merge once all CI / thread-resolution
6+
# requirements are met.
7+
#
8+
# Why not `on: pull_request: [opened]`? That fires before any review can
9+
# arrive, and GitHub's auto-merge cleared `required_conversation_resolution`
10+
# while bot review threads were still in flight (race window observed on
11+
# PR 412 / 417 / AgentLint 204).
312
on:
4-
pull_request:
5-
types: [opened, reopened, ready_for_review]
13+
pull_request_review:
14+
types: [submitted]
615

716
permissions: {}
817

@@ -11,9 +20,34 @@ jobs:
1120
if: github.event.pull_request.draft == false
1221
runs-on: ubuntu-latest
1322
permissions:
14-
pull-requests: write
23+
# enablePullRequestAutoMerge (called by `gh pr merge --auto`) needs
24+
# contents:write — pull-requests:write alone returns "Resource not
25+
# accessible by integration."
1526
contents: write
27+
pull-requests: write
1628
steps:
17-
- run: gh pr merge --auto --squash --repo "${{ github.repository }}" "${{ github.event.pull_request.number }}"
29+
- name: Enable auto-merge once codex + copilot have both reviewed
1830
env:
1931
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
REPO: ${{ github.repository }}
33+
PR: ${{ github.event.pull_request.number }}
34+
run: |
35+
set -e
36+
existing=$(gh pr view "$PR" --repo "$REPO" --json autoMergeRequest --jq '.autoMergeRequest')
37+
if [ "$existing" != "null" ] && [ -n "$existing" ]; then
38+
echo "Auto-merge already enabled."
39+
exit 0
40+
fi
41+
required="chatgpt-codex-connector copilot-pull-request-reviewer"
42+
missing=()
43+
for r in $required; do
44+
n=$(gh api "/repos/$REPO/pulls/$PR/reviews" \
45+
--jq "[.[] | select(.user.login == \"$r\")] | length")
46+
[ "$n" -lt 1 ] && missing+=("$r")
47+
done
48+
if [ ${#missing[@]} -gt 0 ]; then
49+
echo "Waiting for review from: ${missing[*]}"
50+
exit 0
51+
fi
52+
echo "Both required reviewers have reviewed. Enabling auto-merge."
53+
gh pr merge --auto --squash --repo "$REPO" "$PR"

0 commit comments

Comments
 (0)