[DO NOT MERGE] [LONG TERM] Gate heavy CI with reusable workflows - #1922
[DO NOT MERGE] [LONG TERM] Gate heavy CI with reusable workflows#1922gyohuangxin wants to merge 2 commits into
Conversation
🏷️ CI GuideRuns automatically on every eligible PR before approval:
Heavy model tests:
|
There was a problem hiding this comment.
Pull request overview
This PR refactors ATOM’s heavy CI (accuracy / OOT) workflows to run via reusable workflows behind a lightweight “heavy CI gate”, and adds duplicate-success detection so review-triggered re-runs can stop early without expanding large skipped matrices.
Changes:
- Convert the ATOM / vLLM / SGLang heavy test jobs into
workflow_callreusable workflows, keeping existing public workflow files as thin wrappers. - Extend the shared heavy CI gate script to optionally detect an already-successful prior run for the same workflow + PR head SHA and short-circuit the run.
- Add a small “duplicate-success” reporting job in wrapper workflows when the gate determines the run is a duplicate.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/atom-test.yaml | Turns the workflow into a gate + duplicate reporting + reusable-workflow caller (offline smoke test remains in wrapper). |
| .github/workflows/atom-test-reusable.yaml | New reusable workflow containing the heavy ATOM accuracy matrix and dashboard publishing logic. |
| .github/workflows/atom-vllm-test.yaml | Turns the workflow into a gate + duplicate reporting + reusable-workflow caller for vLLM OOT accuracy. |
| .github/workflows/atom-vllm-test-reusable.yaml | New reusable workflow containing the heavy vLLM OOT accuracy matrix. |
| .github/workflows/atom-sglang-test.yaml | Turns the workflow into a gate + duplicate reporting + reusable-workflow caller for SGLang accuracy. |
| .github/workflows/atom-sglang-test-reusable.yaml | New reusable workflow containing the heavy SGLang accuracy matrix. |
| .github/scripts/check_heavy_ci_gate.sh | Adds optional duplicate-success detection and emits duplicate_run_url as a gate output. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| echo "${filter_result}" | ||
| } | ||
|
|
||
| find_duplicate_successful_heavy_run() { |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
Suppressed comments (5)
.github/workflows/atom-test.yaml:116
run-testscalls a reusable workflow that uses the GitHub Actions API (viaghincheck_signal.sh/ wheel download scripts). Reusable workflows cannot elevateGITHUB_TOKENpermissions beyond what the caller job grants, but thisrun-testsjob does not setpermissions, so it may run with the repo default (often missingactions: read) and fail when the called workflow queries workflow runs/jobs.
run-tests:
if: ${{ needs.ci-gate.outputs.should_run == 'true' }}
needs: [ci-gate]
name: Run ATOM accuracy tests
uses: ./.github/workflows/atom-test-reusable.yaml
with:
.github/workflows/atom-vllm-test.yaml:94
run-testsinvokes a reusable workflow that usesgh apito inspect workflow runs/jobs. The called workflow cannot request higherGITHUB_TOKENpermissions than this caller job provides; sincerun-testshas no explicitpermissions, it may lackactions: readand fail inside the reusable workflow.
run-tests:
if: ${{ needs.ci-gate.outputs.should_run == 'true' }}
needs: [ci-gate]
name: Run ATOM vLLM tests
uses: ./.github/workflows/atom-vllm-test-reusable.yaml
with:
.github/workflows/atom-sglang-test.yaml:94
run-testsinvokes a reusable workflow that usesgh api(actions endpoints) as part of the heavy test flow. Since reusable workflows cannot elevate token permissions, this caller job should explicitly grant at leastactions: read(andcontents: read) to avoid failures when the called workflow queries runs/jobs or downloads artifacts.
run-tests:
if: ${{ needs.ci-gate.outputs.should_run == 'true' }}
needs: [ci-gate]
name: Run ATOM SGLang tests
uses: ./.github/workflows/atom-sglang-test-reusable.yaml
with:
.github/workflows/atom-test-reusable.yaml:546
accuracy-dashboardauto-pushes benchmark data togh-pagesviabenchmark-action/github-action-benchmark, which requirescontents: write. With reusable workflows, permissions are constrained by the caller job, and this job currently doesn't declare the needed permissions, so it can fail in repos configured with restricted defaultGITHUB_TOKENpermissions.
accuracy-dashboard:
name: Update accuracy dashboard
needs: [atom-test]
if: always() && inputs.is_main_ref && (inputs.caller_event_name == 'push' || inputs.caller_event_name == 'schedule')
.github/workflows/atom-test.yaml:74
- The duplicate-detection regex currently requires
Accuracy (but in the called workflow (atom-test-reusable.yaml) the matrix job is namedAccuracy(no explicit parentheses). This can make duplicate detection miss successful prior runs depending on how the Jobs API reports matrix job names. Broadening the pattern to match bothAccuracyandAccuracy (...)avoids false negatives.
id: gate
env:
CI_GATE_DUPLICATE_SUCCESS_JOB_PATTERN: '(^| / )Accuracy \('
CI_GATE_LABELS: ci:full,ci:atom
Related to #1920
Summary
Why
The current duplicate-skip approach can avoid rerunning expensive jobs, but the UI still expands many skipped matrix jobs. This version keeps duplicate cases cleaner: the wrapper runs the gate, reports an explicit already-passed job, and does not invoke the reusable heavy test workflow.
Notes
Testing