You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
chore(ci): merge queue 방출을 자동 처리한다 — 조용한 방출은 한 번 재투입, CI 실패는 실패 job 링크 코멘트 #1892
merge group CI 실패 — PR 화면엔 «removed from the merge queue» 만 남고, 실패한 job 은 Actions 탭에서 event:merge_group 으로 따로 찾아야 한다.
pull_request_target 의 dequeued 이벤트로 둘을 자동 처리해 «투입하고 끝» 으로 만든다.
작업 범위:
.github/workflows/merge-queue-dequeue.yml — pull_request_target: types: [dequeued]. default branch 의 스크립트만 실행하고 PR 코드는 체크아웃하지 않는다(stack-integrity-notify.yml 과 같은 경계).
.github/scripts/handle-merge-queue-dequeue.mjs — 판정 순서: ① 그 PR 의 큐 브랜치(gh-readonly-queue/<base>/pr-<N>-*) merge_group run 에 실패·타임아웃 job 이 있으면 CI 실패 → 실패 job 링크를 PR 코멘트로 남기고 재투입하지 않는다. ② payload reason 이 MANUAL·ALREADY_MERGED·MERGE 면 아무것도 하지 않는다. ③ 그 밖(조용한 방출)이면 enqueuePullRequest 로 같은 head SHA 당 한 번만 재투입한다 — 마커 코멘트로 횟수를 세고, 같은 SHA 의 두 번째 방출은 재투입 없이 사유만 코멘트한다(0902 맹목 재투입 사고의 «한 번까지» 규칙).
handle-merge-queue-dequeue.test.mjs — 위 판정표를 잠근다. unit-test.yml 의 node --test .github/scripts/*.test.mjs 글롭에 자동 편입.
완료 조건:
조용한 방출 → 재투입 1회. 같은 head SHA 의 두 번째 방출 → 재투입 없이 코멘트.
CI 실패·타임아웃 → 실패 job 링크 코멘트, 재투입 없음.
MANUAL·ALREADY_MERGED·MERGE → 무동작.
판정이 정책 테스트로 고정되고 node --test .github/scripts/*.test.mjs·scripts/repository-quality.sh(actionlint) 통과.
Activity
Merge pull request #1893 from Afternote/chore/1892-merge-queue-dequeue