ci: run the Windows source checks in two parts, slowest checks first #2025
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2025
Loading…
Reference in a new issue
No description provided.
Delete branch "ci-faster-checks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The game-free source regressions are the slowest check on every pull request: 11-15 minutes on Windows (the last six runs on main: 669-944 s for the Windows job, 362-561 s for Linux), so a PR waits on them long after the builds are green.
Where the Windows time went (per-test times from the last three main runs):
tests/test_bake_skeleton.py(408-600 s) builtgpu/shaderbatch(the vendored recompiler, ~164 files) three times, once in each of its translating tests. It is skipped on Linux (ubuntu-24.04's clang++ has no C++23 mode), so this was Windows only.test_recorder_sync,test_bake_*) started late and ran on alone.What changed:
tests/run_all.pystarts the slowest checks first, bytests/run_all_times.json(each OS's checks of 2 s or more, measured from those runs; a check not in it counts as 1 s), and--shard K/Nruns one of N parts split by those times. Every check is in exactly one part, whatever the times say: stale times only make the parts uneven.--write-timesafter a full run refreshes the file.tests/test_run_all_schedule.pychecks the split.Python source checks (windows-2022, part 1/2)andpart 2/2); the MSVC and Builder build steps run in part 1. Linux stays one job, under the same name.tests/test_bake_skeleton.pybuilds the tool once for the file and copies it into each test's folder; each test still translates on its own.--parallel $(nproc)instead of 2 (they were 190-317 s).No check is dropped, skipped or moved behind a path filter: every check still runs on every PR and push, on the same OS as before.
Before/after: filled in from this PR's run below.