Skip to content

fix(ci): merge-order-guard 가 closing 참조 0건이면 무검사 통과 — 제목·본문 정규식과 합집합으로 보강 #1189

Closed

Description

@OnlyReadOneBook

📜 Overview (Required)

merge-order-guard 는 검사 대상 이슈를 PR 의 closingIssuesReferences 로만 뽑는다. 이 목록이 비면 for 루프에 진입조차 못 하고 exit 0 — 머지 순서 검사가 통째로 증발하는데 체크는 초록이다.

GitHub 이 본문의 closing 키워드를 링크로 승격해 주지 않는 고장이 이 레포에서 반복되고 있어(#879·#880·#1176), 이건 이론상 구멍이 아니라 이미 새고 있는 구멍이다.

실례 — #1176

  • 본문 46/47줄에 Closes #1149 가 있다. od 로 바이트까지 확인했고 앞뒤 빈 줄, 코드펜스 0개, 불릿 안도 아니다
  • 그런데 closingIssuesReferences: [] 다. 타임라인에도 CrossReferencedEvent 만 있고 ConnectedEvent 가 없다 — 링크가 한 번도 생성된 적 없다
  • guard 는 pass 5s. 실제로 검사한 이슈는 0건이다

원인 후보 4종은 실측으로 배제했다.

가설 반증
base 가 develop 이 아니라서 #1031(fix/910)·#886·#885·#883·#863 전부 스택인데 링크 정상
base 를 나중에 스택으로 바꿔서 BaseRefChangedEvent 0건 — 처음부터 fix/1141
본문 앞쪽에 #N 이 먼저 언급돼서 #1163(47줄 Closes, 앞 언급 1건)·#1174 가 같은 패턴인데 정상
등록 지연 생성 후 2시간 12분 경과. 이슈도 정상(OPEN·locked=false)

키워드 토글(제거 저장 → 25초 → 원본 복원 저장 → 150초 관측)로도 복구되지 않았다. #879·#880 에서 REST gh pr edit·GraphQL updatePullRequest·키워드 교체·본문 말미 배치·close→reopen 까지 전부 실패한 것과 같은 유형이다. PR 쪽에서 고칠 수단이 없다.

제안

auto-close-issue.yml 은 이미 같은 문제를 정규식으로 우회하고 있다 — 제목+본문을 직접 파싱해 base 무관하게 이슈를 close 한다.

const text = `${pr.title}\n\n${pr.body || ''}`;
const regex = /\b(?:close[ds]?|fix(?:e[ds])?|resolve[ds]?)\s+(?:([\w.-]+\/[\w.-]+))?#(\d+)/gi;

guard 도 closingIssuesReferences 결과와 이 정규식 결과의 합집합을 검사 대상으로 삼으면 된다. GitHub 링크가 고장나도 순서 검사가 살아남고, 부수적으로 - Closes #N(불릿 안이라 참조가 안 잡히는) 함정도 같이 막힌다.

📌 Child Issue(Optional)

No response

📍 Note (Optional)

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions