ci: narrow the GPU serve matrix with a serve paths-filter + PR canary (EAI-7746) - #156
ci: narrow the GPU serve matrix with a serve paths-filter + PR canary (EAI-7746)#156fredespi wants to merge 1 commit into
Conversation
…I-7746) The `changes` job gated the three self-hosted GPU E2E jobs on the coarse `heavy` filter, so any Rust change (dashboard, unrelated crates) fired the whole real-GPU serve matrix on scarce serial hardware. - Add a dedicated `serve` paths-filter (serve code path + engines + E2E harness + broad-dep safety nets; excludes the rocm-dash crates) and gate the GPU jobs on it, so non-serve Rust PRs skip the matrix. Forced true off-PR so the merge queue always runs the full matrix. - Gate the two Strix lanes to merge_group/push only; keep the MI300X lane on pull_request in canary mode (E2E_PR_CANARY) running a single minimal real serve as a pre-merge smoke. - Add a `@canary` / `@serves-on-gpu` harness gate (mirrors `@nightly`): in canary mode every GPU-serving scenario except the canary resolves to Skip, keeping platform.json valid so the consolidated report reconciles. - Gate the consolidated report on `heavy || serve` so a serve-only change still produces it. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
|
Automated review pass over the diff against Findings1. 2. 3. 4. 5. 6. Also cross-PR: the Verified clean
Not verified
Nice change overall: the filter comments explain the reasoning rather than just the rule, and the new unit tests cover canary-on/canary-off for both |
Summary
The
changesjob gated the three self-hosted GPU E2E jobs (e2e-gpu,e2e-gpu-strix-ubuntu,e2e-gpu-strix-windows) on the coarseheavypaths-filter, which trips on any**/*.rschange. So a Rust PR that can't affect serving (dashboard, unrelated crates) fired the whole real-GPU serve matrix on scarce serial hardware. This narrows that matrix and adds a fast pre-merge serve canary.Changes
servepaths-filter (EAI-7746): a dedicated filter covering the serve code path (engines/**,crates/rocm-core,crates/rocm-engine-protocol,apps/rocm,apps/rocmd), the E2E harness (tests/e2e-cucumber/**,crates/e2e-report,xtask,**/*.feature), plus broad-dep safety nets (rootCargo.toml,Cargo.lock,rust-toolchain*, workflow files). Excludes therocm-dash-*crates — they build intorocmbut can't change serve behaviour, and their compile coverage stays on the always-on build/test lanes. The GPU jobs now gate onserve; forced true off-PR so the merge queue always runs the full matrix (required checks never starved).merge_group/pushonly (skip on PR; required-but-continue-on-error, so the skip satisfies branch protection). The MI300X lane still runs onpull_requestbut in canary mode (E2E_PR_CANARY), serving only a single minimal real scenario as a pre-merge smoke; the full matrix runs in the merge queue.@canary/@serves-on-gpuharness gate (mirrors@nightly): in canary mode every GPU-serving scenario except the canary resolves toSkip, soplatform.jsonstays valid and the consolidated report reconciles.@serves-on-gputags the scenarios that real-serve on a GPU host without@requires-gpu(short-name expansion, chat behavioural) so they're skipped in canary mode but still mock-covered every PR.heavy || serveso a serve-only change still produces the requiredE2E consolidated reportcheck.Test plan
--workspace --all-targets --exclude e2e-cucumber -D warnings, workspace tests,e2e-cucumber --lib, andcargo xtask e2emock lane (reconciliation: 3 xfail / 0 XPASS / 0 unexpected).servegates exactly the 3 GPU jobs + report;heavystill gates the mock/build/test lanes.@canaryscenario.