Skip to content

fix(platform): dependabot 게이트가 채운 제목·본문을 PR Validation·기기 레인이 못 보고 red 로 남는다 #2212

Closed

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

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

개요

#2112 의 dependabot-pr-gate 가 dependabot PR 에 대표 이슈·제목 (#N)·CI Test Plan 을 채워도, 같은 순간 열린 PR Validation 과 Managed Device 는 그 값을 못 보고 red 로 남는다. #2138 에서 Repository Quality 는 제목 게이트로, 기기 레인 4개는 CI Test Plan 없음으로 실패했고, 사람이 본문에 줄바꿈 하나를 더해 edited 를 내서야 풀렸다. 다음 주간 실행(월 21:43Z)에서도 똑같이 반복된다.

원인은 두 겹이다.

  1. 게이트는 GITHUB_TOKEN 으로 PATCH 한다. 이 토큰이 낸 edited 는 다른 워크플로를 깨우지 못한다.
  2. 두 검증은 pull_request 이벤트에서 제목·본문을 이벤트 페이로드($GITHUB_EVENT_PATH)에서 읽는다. 페이로드는 opened 시점 값으로 고정돼 있다.

#2138 의 시각(run 35659509142, 35659511934, 35659511616):

시각(UTC) 일
21:51:00 게이트 job 시작
21:51:02 Repository Quality 시작
21:51:06.27 게이트가 제목·본문 PATCH 완료
21:51:06.53 Repository Quality 가 제목 게이트로 실패
21:51:07~12 기기 레인 4개가 CI Test Plan 없음으로 실패

해법 판정

후보 셋은 저장소의 기존 실측과 정책으로 막힌다.

  • 게이트가 채운 뒤 workflow_dispatch 로 다시 부르기: 같은 sha 에 dispatch run 이 초록을 붙여도 PR 롤업은 먼저 있던 pull_request 실패를 계속 보인다(0913 refactor(onboarding): ViewModel 3개를 MVI 로 옮기고 소비를 Intent 로 접는다 (#1802) #1825 실측, 같은 이름 check run 둘 중 롤업에는 실패만 남음). 스크린샷 골든 브리지가 dispatch 로 통하는 것은 토큰 커밋이 만든 새 sha 라서다.
  • 게이트가 해당 run 을 재실행: 재실행은 원 run 의 이벤트 페이로드를 그대로 쓴다. chore(deps): bump the github-actions-updates group with 4 updates (#2139) #2138 에서 9/23 에 두 run 을 재실행(attempt 2)했지만 Repository Quality 는 같은 "제목은 대표 Issue 번호 하나로 끝나야 합니다" 로 다시 실패했다. 검증을 live 읽기로 바꿔 재실행을 살리더라도, 기기 레인은 실제 테스트가 attempt 2 에서 돌게 된다. 그러면 android-managed-device-retry.yml 의 인프라 복구(run_attempt == 1 에서만 한 번)를 잃고, 게이트에 actions: write 를 더해야 한다.
  • GitHub App 토큰으로 편집: 저장소에 App 이 없다. 개인 키 시크릿이 필요한데 create-ci-config.test.mjs 가 pull_request_target 브리지 넷(dependabot-pr-gate.yml 포함)의 시크릿 참조를 금지한다.

그래서 방향을 바꾼다. 게이트가 검증을 다시 부르지 않고, 검증이 게이트를 기다린다. dependabot 이 연 PR 의 pull_request run 에서만 Repository Quality 와 기기 레인이 live PR 을 조회해, 게이트 마커와 (#N) 제목이 보일 때까지 짧게 기다린 뒤 그 live 값으로 판정한다. 기다림 판정은 dependabot-pr-gate.mjs 의 needsGate 하나를 같이 쓰고, 기기 레인은 기존 신뢰 정책 스테이징(default branch 사본)으로 그 스크립트를 부른다. 게이트 권한은 늘지 않는다.

완료 조건

  • dependabot PR 의 pull_request run 에서 Repository Quality 와 기기 레인이 게이트가 채운 제목·본문으로 판정한다. 사람 PR 과 dispatch·merge_group 경로는 지금과 같다.
  • 게이트가 제한 시간 안에 못 채우면 기다림을 끝내고 live 값으로 판정해, 지금과 같은 오류 문구로 실패한다(무기한 대기 없음).
  • 게이트 워크플로 권한은 issues: write·pull-requests: write 그대로다. 이 결정과 두 검증의 대기 경로를 정책 테스트로 잠근다.
  • 다음 dependabot 주간 PR 에서 사람 편집 없이 PR Validation·Managed Device 가 초록인 것을 run 으로 확인한다.

자식 이슈

참고

도입 #2112, 증상 PR #2138(대표 이슈 #2139). dispatch 롤업 실측 #1825, 재실행 대신 제자리 갱신을 고른 선례 #1983, dispatch 브리지 #1850.

Activity

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

    @github-actions
    Contributor

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

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

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

  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 28, 2026
  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Oct 4, 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