diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index bed044168e..1b904ba9ba 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,6 +15,25 @@ jobs: name: Review dependency changes runs-on: ubuntu-latest steps: + # PR 스냅샷은 두 워크플로를 거쳐야 API 에 올라온다 (fork PR 을 checkout 하지 않기 위한 분리다). + # 1. Gradle Dependency Submission — PR 컨텍스트. 아티팩트만 만든다 + # 2. Submit PR Dependency Graph — workflow_run. 그 아티팩트를 제출한다 + # + # 이 job 은 1번과 **동시에** 출발하므로, 파이프라인이 끝날 때까지 기다려야 볼 것이 생긴다. + # 못 기다리면 취약점 유무와 무관하게 `No snapshots were found for the head SHA` 로 실패한다. + # + # 실측 (#1081, PR #886, UTC): + # 14:46:36 → 14:49:39 생성 (3분 3초) + # 14:47:26 이 job 시작 + # 14:54:52 제출 시작 — 생성 종료 후 5분 13초 (workflow_run 지연 + 러너 큐) + # 14:58:19 한도 10분 소진, 실패 + # 필요한 시간이 9분인데 한도가 10분이라, 큐가 조금만 밀려도 넘어갔다. + # 같은 시각 다른 PR 5건은 통과했다 — PR 내용이 아니라 큐 상태로 결과가 갈렸다. + # + # 한도를 20분으로 두어 실측치의 두 배 여유를 준다. 스냅샷이 제때 오면 재시도 없이 즉시 + # 끝나므로 평시 비용은 그대로다. 근본적으로는 이 job 을 제출 뒤로 옮기는 편이 맞지만, + # dependency-review-action 이 `pull_request` 컨텍스트를 전제해 workflow_run 으로 옮기면 + # PR 에 체크가 붙지 않는다. 그 재배치는 별건으로 다룬다. - name: Fail on newly introduced high-severity vulnerabilities uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0 with: @@ -22,4 +41,4 @@ jobs: fail-on-severity: high license-check: true retry-on-snapshot-warnings: true - retry-on-snapshot-warnings-timeout: 600 + retry-on-snapshot-warnings-timeout: 1200