Repository navigation
Conversation
Every push to any branch now runs CI, so a branch shows Windows test failures before it reaches main. A pull request from a branch in this repository skips its own run, since the push already ran on the same commit; pull requests from forks still run in full. A newer push to a branch cancels the older run, and every commit on main keeps its run. Builds cache downloaded crates and target/ with actions/cache, keyed on the job, the runner, rust-toolchain.toml and Cargo.lock. A job saves only on a miss and only after its build passed, so failing tests still leave the build cached. The workspace's own crates are removed before saving, and a restored target/ over 4 GB is thrown away. This replaces Swatinem/rust-cache, whose Windows key changed whenever the runner image updated its preinstalled Rust, so Windows often built from nothing (17 minutes instead of 3). Test builds keep line tables only for debug info, incremental builds are off, and tests build with --no-run before they run, so the log shows build and test time apart. The crate age check on a new branch compares with the commit where the branch left main instead of checking every crate again.
du fails on a missing target/ and the bash step runs with pipefail, so the first run on a cold cache stopped there. The step now counts a missing target/ as 0 MB.
Owner
Author
|
Merged to main from branch ci-cache, the same commits moved onto 0.6.1, with a timing test given more room. |
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.
Every push to any branch now runs CI, so Windows test failures show up on the branch instead of on release day. Builds now hit their cache reliably. A whole run still takes about 32 minutes, because Windows spends 25 to 29 minutes running the tests themselves.
Run times
Minutes per job. Baseline is run 40445557572 on main, which restored a warm Swatinem cache. The first run on this branch started with an empty cache (40455857892), and the second restored it (40462778615).
On main, Windows sometimes found no cache and built for 17.3 minutes (run 40328135709). With line tables only, an empty-cache Windows build now takes 10.4 minutes.
Windows fails the same nine drop-path tests on this branch as on main. #4 fixes them.
What changed in ci.yml
cargo clean -premoves the workspace's own crates, which every commit rebuilds. A restored target/ over 4 GB is thrown away, so old dependency versions cannot pile up. Each job's cache is 231 to 302 MB, about 1.9 GB for all seven, against the 10 GB repository limit.CARGO_PROFILE_DEV_DEBUG=line-tables-only) and run withCARGO_INCREMENTAL=0. Tests build with--no-runfirst, so the log shows build time and test time as separate steps.Operating systems, features, test commands and jobs are unchanged.
sh scripts/workflow-check.sh .github/workflows/*.ymlandsh scripts/workflow-check-test.shpass.