Repository navigation
ci: start the simulation groups once the native archive is built - #588
Merged
Merged
Conversation
This was referenced Sep 25, 2026
Every test job needed every build job: both test archives, the ROM and the reference emulator. A simulation group reads only the native crate's archive, so it waited on the slowest of the others for nothing. The native archive gets its own job, build-native-tests, and build-tests builds the other crates' archive. The simulation groups move to their own matrix job, test-sim, which needs only build-native-tests and downloads only its archive. `test` keeps emulator and native-rest and every build job. ci-passed needs the two new jobs. group_coverage.rs reads the groups of every test matrix in ci.yml, so the check that CI runs every group the script defines covers both jobs.
MarcusKainth
force-pushed
the
ci/sim-groups-start-early
branch
from
September 25, 2026 11:54
5906254 to
993a4aa
Compare
MarcusKainth
marked this pull request as ready for review
September 25, 2026 12:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #587 (
ci/test-group-coverage); the diff against that branch is this one commit.What this changes, and why
Every test job needs every build job: both test archives, the ROM and the reference emulator. A simulation group reads only the native crate's archive, so it waits on the slowest of the others for nothing. The simulation groups are the longest jobs, so their start time sets the critical path.
build-native-tests.build-testsbuilds the other crates' archive.test-sim. It needs onlybuild-native-tests, downloads only the native archive, and skips the ROM and refemu downloads, which no native suite reads.testkeepsemulatorandnative-restand still needs every build job.ci-passedneedsbuild-native-testsandtest-sim, and every job in the file is in itsneeds.group_coverage.rsreads the groups of every test matrix, so the check that CI runs every group the script defines covers both jobs.This costs some duplicated YAML: two build jobs and two test jobs with the same steps. If that isn't worth the time, drop this PR and the rest of the stack still stands.
Evidence
Mutation:
native-sim-fdropped fromtest-sim's matrix, restored withgit checkout HEAD -- .github/workflows/ci.yml:Job start times
This PR's run 36125404729 overlapped four other runs of this stack, so the account's concurrent-job limit queued its test jobs.
build-native-testsfinished at 10:46:13 and the first simulation group started at 10:46:17. The other groups waited in the queue until 10:47:54. Every group passed andci-passedsucceeded.The throwaway run 36126756550 (#590: this branch merged with #585, run on its own) shows the layout without the queue. Attempt 2 had a warm cache:
build-native-testsdone (32 s archive, 119,335,242 B)build-testsdone (74 s archive, 72,444,455 B)emulator,native-rest,test-groupsstartnative-sim-f) donenative-restdoneci-passeddoneThe simulation groups start 42 s earlier than they could when they need
build-tests. The median test job spends 22 s from its start to its suites, and each download takes 3 to 5 s.native-restis the critical path, running its suites for 371 s at--test-threads 2.Invariants
None. CI job layout only.
Spec impact
Checks
make gates: not run locally.make lintpassed locally on this branch plus ci: start ClickHouse while the test archives download #589 (809fd5e), exit 0, and every test group passed in CIWritten mostly by Claude Opus 5.5.