Also found while modelling ddx's wheel CI on this workflow.
ci-build.yml L46 keys the Cargo cache on the toolchain:
- uses: dtolnay/rust-toolchain@stable
- name: Cache Cargo
uses: actions/cache@v4
with:
key: cargo-cache-${{ steps.rust-toolchain.outputs.cachekey }}-${{ matrix.platform.runner }}-...
but no step carries id: rust-toolchain, so steps.rust-toolchain.outputs.cachekey resolves to the empty string and the key collapses to cargo-cache--<runner>-<target>-<Cargo.lock hash>.
The cache still works, so nothing fails — but it no longer invalidates when the toolchain moves. @stable rolls forward roughly every six weeks, and on that day the job restores artifacts built by the previous compiler under a key that claims to describe the new one. Usually harmless, occasionally a confusing rebuild or a stale-artifact error that does not reproduce locally.
One-line fix:
- uses: dtolnay/rust-toolchain@stable
id: rust-toolchain
Worth noting the same key is used across five matrix entries that differ in platform.target but share a runner for the two Ubuntu rows (aarch64 and x86_64 both on ubuntu-latest) — those are distinguished by target, so that part is fine.
Happy to send a PR alongside #242 if useful.
Also found while modelling ddx's wheel CI on this workflow.
ci-build.ymlL46 keys the Cargo cache on the toolchain:but no step carries
id: rust-toolchain, sosteps.rust-toolchain.outputs.cachekeyresolves to the empty string and the key collapses tocargo-cache--<runner>-<target>-<Cargo.lock hash>.The cache still works, so nothing fails — but it no longer invalidates when the toolchain moves.
@stablerolls forward roughly every six weeks, and on that day the job restores artifacts built by the previous compiler under a key that claims to describe the new one. Usually harmless, occasionally a confusing rebuild or a stale-artifact error that does not reproduce locally.One-line fix:
Worth noting the same key is used across five matrix entries that differ in
platform.targetbut share arunnerfor the two Ubuntu rows (aarch64andx86_64both onubuntu-latest) — those are distinguished bytarget, so that part is fine.Happy to send a PR alongside #242 if useful.