test(e2e): gate heavy GPU serves to the merge queue - #157
Conversation
|
Automated review pass over the diff against The mechanism itself checks out. Verified directly: the Findings, most severe first1. 2. 3. 4. The PR description's framing overstates the safety net (pre-existing mechanism, but this change leans on it). 5. 6. Checked and clean
Worth reinforcing
Not verified
|
|
Cross-posting from #156 — these two PRs currently contradict each other, so whichever lands second needs to become a delta rather than a rebase. Both add a 6th positional
If both land as written, 6b carries both tags, and the merge_queue check runs before the canary check in For what it's worth, the per-engine pair here looks like the better answer — vLLM and lemonade each get a real per-PR smoke, where a single canary only ever exercises whichever engine is the platform default. Worth agreeing on one mechanism (one flag, one tag vocabulary) before either merges. |
The full real-GPU serve matrix ran on every PR, making the per-PR GPU lanes slow. Add a @merge-queue scenario axis (mirroring @nightly) so the redundant default-engine and readiness serves run only in the merge queue, while one real serve per engine (vLLM, lemonade) stays on the PR path as a pre-merge canary. The GPU E2E jobs still run on pull_request and produce their required checks; only the work is trimmed. ci.yml sets E2E_MERGE_QUEUE on the merge_group event to opt those scenarios back in before a change lands. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
83f223d to
0fd0aed
Compare
Summary
The full real-GPU serve matrix ran on every PR, making the per-PR GPU lanes slow. This gates the redundant heavy serves to the merge queue while keeping one real serve per engine on the PR path as a pre-merge canary, so a broken serve is still caught before a change enters the queue.
Changes
@merge-queuescenario axis, mirroring the existing@nightlyone: a newmerge_queuefield onScenarioDecl, aninclude_merge_queuearg toresolve()with a skip branch, and anE2E_MERGE_QUEUEenv read in the harness.serve-default-engine-working-endpoint,serve-default-engine-inference,serve-readiness-contract)@merge-queueso they run only in the merge queue.serve-vllm-inference(vLLM) andserve-lemonade-inference(lemonade) untagged as per-engine PR canaries.ci.ymlsetsE2E_MERGE_QUEUEon themerge_groupevent for all three GPU jobs. The jobs still run onpull_requestand produce their required checks; only the work is trimmed.Test plan
cargo fmt --check,cargo clippy --workspace --all-targets --exclude e2e-cucumber -- -D warningsclean (Linux container).cargo test --workspace+cargo test -p e2e-cucumber --libgreen (64/64, incl. a newmerge_queue_scenario_skips_unless_includedunit test).