ci: enable Ninja and sccache across test jobs#512
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR reduces CI wall time by enabling Ninja + sccache across the x86 EVM/WASM test workflows, consolidating CI CMake invocation behind a shared helper script, and improving sccache stats visibility (including across long perf benchmark phases).
Changes:
- Enable Ninja + sccache globally in the EVM/WASM x86 workflows and update FetchContent cache keys to be generator-namespaced.
- Route CI CMake builds (including evmone sub-builds) through a new
.ci/cmake_ci_build.shhelper. - Add sccache stats reporting via a new
.ci/print_sccache_stats.py, with additional checkpoints for perf jobs.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/dtvm_wasm_test_x86.yml |
Enables Ninja+sccache for WASM jobs, updates FetchContent cache keys, and routes a build through the shared CMake helper. |
.github/workflows/dtvm_evm_test_x86.yml |
Enables Ninja+sccache across EVM jobs, adds Hunter cache for evmone-related jobs, and updates perf baseline build flags to keep stats alive. |
.ci/run_test_suite.sh |
Uses the shared CMake build helper, adds dry-run support for some steps, and prints sccache stats checkpoints + final stats via an EXIT trap. |
.ci/print_sccache_stats.py |
New helper to print concise sccache stats (and optionally enforce that requests were observed). |
.ci/cmake_ci_build.sh |
New shared CMake configure+build wrapper supporting Ninja/sccache toggles and dry-run output. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
⚡ Performance Regression Check Results✅ Performance Check Passed (interpreter)Performance Benchmark Results (threshold: 25%)
Summary: 194 benchmarks, 0 regressions ✅ Performance Check Passed (multipass)Performance Benchmark Results (threshold: 25%)
Summary: 194 benchmarks, 0 regressions |
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.
Why
CI wall time is dominated by C++ compilation rather than dependency downloads. After the canary jobs showed stable Ninja+sccache behavior and green EVM/WASM checks, this PR rolls the setup out across the x86 test workflows and keeps perf-job sccache stats alive through long benchmark phases.
What
run_test_suite.shCMake builds through the shared.ci/cmake_ci_build.shhelper, including evmone sub-builds.main./github/home/.hunterpackage directory for evmone unit/statetest/perf jobs.SCCACHE_IDLE_TIMEOUT=0.Local verification
bash -n .ci/cmake_ci_build.sh .ci/run_test_suite.shpython3 -m py_compile .ci/print_sccache_stats.pygit diff --checkPATH=/opt/llvm15/bin:$PATH ./tools/format.sh checkDTVM_CI_DRY_RUN=1command expansion shows-G Ninjaand-DCMAKE_*_COMPILER_LAUNCHER=sccachewhen enabled, and preserves the default non-Ninja path when disabled.CI validation
Latest
pull_requestruns for commit98950bf8876eb44228d38dfc9a4cde4daad26e7bare green:Observed warm-cache job times from the latest successful checks:
Perf sccache stats are now retained through the long benchmark phase:
This confirms the previous
compile_requests=0in perf jobs was stats lifecycle/idle-timeout related, not a missing CMake compiler launcher. Perf jobs remain benchmark-dominated because each job still runs baseline and current benchmarks on the same runner.