Skip to content

fix(platform): 골든 봇 커밋에 guard check 가 붙지 않는다 — merge-order-guard 디스패치 ref 가 PR 브랜치 #2069

Closed as not planned

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

platform — Android 앱·CI·빌드·릴리스·저장소 운영

개요

골든 봇 커밋 SHA 에 guard 체크가 끝내 붙지 않아 스크린샷 baseline 이 바뀐 PR 이 Expected / waiting for status 로 굳는다.

screenshot-baseline-apply.yml 의 Dispatch required checks on the resulting SHA 스텝은 세 워크플로를 하나의 common 객체로 묶어 전부 ref: TARGET_BRANCH(= PR head 브랜치)로 dispatch 한다.

const common = { owner, repo, ref: process.env.TARGET_BRANCH };
await github.rest.actions.createWorkflowDispatch({ ...common, workflow_id: 'pr-validation.yml', ... });
await github.rest.actions.createWorkflowDispatch({ ...common, workflow_id: 'codeql.yml', ... });
await github.rest.actions.createWorkflowDispatch({ ...common, workflow_id: 'merge-order-guard.yml', ... });

그런데 merge-order-guard.yml 의 publish-dispatch-result job 은 github.ref_name == github.event.repository.default_branch 조건이라 PR 브랜치 ref 로 돌면 항상 skip 된다. guard job 자체는 default branch 사본으로 정확히 판정하지만, 그 판정을 check-run 으로 게시하는 job 이 건너뛰어져 결과가 SHA 에 안 붙는다. guard 는 required check 라 PR 이 그대로 멈춘다.

실측이다. 아래 네 run 은 모두 actor 가 github-actions[bot], head_branch 가 PR 브랜치이고, jobs 가 guard(실행) + publish-dispatch-result(skipped) 로 끝났다.

  • 34732994968
  • 34733096482
  • 34733294885
  • 34743028924

pr-validation.yml 과 codeql.yml 은 PR 사본으로 도는 것이 맞으므로 공통 ref 를 그대로 두어야 한다. ref 를 바꿔야 하는 것은 merge-order-guard 하나다.

이 구멍은 #1977 이 merge-order-guard 를 pull_request_target 으로 옮기고 #1983 이 재게시 경로를 바꾼 뒤에 생겼다. #1850 이 다룬 것은 pr-validation.yml 디스패치가 job 0개로 죽는 별개 증상이고, 이 이슈는 디스패치가 성공하는데도 결과가 게시되지 않는 쪽이다.

완료 조건

  • merge-order-guard 디스패치만 default branch ref 로 분리해 보낸다. pr-validation.yml 과 codeql.yml 은 지금의 PR 브랜치 ref 를 유지한다
  • remote-dev-workflows-policy.test.mjs 의 baseline apply 브리지 단언에 ref 단언을 더한다. 지금은 workflow_id 셋만 단언하고 ref 는 보지 않아 이 회귀를 잡지 못했다
  • 골든이 바뀌는 PR 에서 봇 커밋 뒤 guard check 가 실제로 붙는 것을 확인한다

자식 이슈

참고

merge-order-guard-policy.test.mjs 의 ref_name == default_branch 게이트는 PR 사본이 자기를 검사하는 가드를 고쳐 통과하는 것을 막는 자리다. 이 이슈를 푼다고 그쪽을 풀면 가드가 약해지므로 건드리지 않는다. 고칠 곳은 디스패치를 보내는 쪽이다.

Activity

  1. added
    bugSomething isn't working
    area:platformCI·빌드·릴리스·저장소 운영 영역
    on Sep 13, 2026
  2. github-actions commented on Sep 13, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 13, 2026
  4. OnlyReadOneBook commented on Sep 13, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    이 이슈는 제 오진입니다. 결함이 아니라 정상 동작이라 not planned 로 닫습니다.

    무엇을 잘못 봤나

    본문은 publish-dispatch-result 가 skipped 로 끝난 run 네 건을 근거로 들면서, 그래서 봇 커밋 SHA 에 guard 가 안 붙는다고 적었습니다. skipped 는 관측이지만 그 뒤 결론은 관측이 아니라 추론이었고, 그 추론이 틀렸습니다.

    오늘 PR #2072 와 #2067 에 screenshot-baseline 라벨을 붙여 실제로 확인했습니다. 봇 커밋에 guard 가 정상으로 붙었습니다.

    본문이 근거로 든 네 건도 되짚어 보니 전부 붙어 있었습니다.

    run 브랜치 그 SHA 의 guard
    34732994968 fix/1488-keypad-typography success
    34733096482 fix/1147-withdraw-font-scale success
    34733294885 fix/1861-icon-tint-token success
    34743028924 fix/1281-receiver-list-state failure (실제 판정)

    왜 지금 코드가 맞나

    Actions 의 모든 job 은 자기 이름으로 check-run 을 만들고, 그 check-run 은 워크플로가 돈 ref 의 SHA 에 붙습니다. baseline apply 가 ref: TARGET_BRANCH(PR 브랜치)로 디스패치하므로 guard job 의 check-run 이 PR 브랜치 tip, 즉 봇 커밋에 그대로 붙습니다. 별도 게시가 필요 없으니 publish-dispatch-result 가 skip 되는 것이 맞습니다.

    publish-dispatch-result 는 다른 경로를 위한 것입니다. merge-order-guard.yml 의 refresh job 이 선행 이슈가 닫힐 때 --ref develop 로 디스패치하는데, 그때는 job 의 check-run 이 develop SHA 에 붙어 PR 이 못 봅니다. 그래서 캡처해 둔 PR HEAD 에 명시적으로 게시하는 것입니다. github.ref_name == default_branch 조건은 두 경로를 가르는 자리이지 구멍이 아닙니다.

    제안했던 수정은 오히려 해로웠습니다. merge-order-guard 를 default branch ref 로 보내면 guard job 의 check-run 이 develop SHA 에 붙고, 거기에 더해 publish-dispatch-result 가 PR HEAD 에 하나를 더 게시합니다. 무관한 워크플로 이름 아래 guard 가 두 줄로 뜨는 상태, 바로 #1977 이 없앤 그 상태로 되돌아갑니다.

    PR #2071 은 머지하지 않고 닫습니다. #1850 은 pr-validation.yml 디스패치가 job 0개로 죽던 별개 건이고 그쪽은 그대로 유효합니다.

  5. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:platformCI·빌드·릴리스·저장소 운영 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions