Skip to content

ci: stop caching the Rust target directory in the docker workflow - #265

Merged
vsilent merged 1 commit into
devfrom
ci/no-target-cache
Sep 21, 2026
Merged

vsilent merged 1 commit into
devfrom
ci/no-target-cache

Conversation

@vsilent

@vsilent vsilent commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

The build filled the runner's disk and died in post-job cleanup:

Unhandled exception. System.IO.IOException: No space left on device

Every check had passed — cargo check, the test suite, the BDD suite, rustfmt, all four release binaries. The job only failed while saving its cache, after 33 minutes.

actions/cache was storing the whole target directory, and restore-keys: docker- meant each run started from an older, already bloated cache, added to it, and saved a larger one — so every run raised the next one's floor. For a workspace building five binaries in both debug and release that ratchets past the ~14 GB a runner has free.

Replaced with Swatinem/rust-cache, caching registry and git only. rust.yml already made this exact call, with a comment explaining why; the two workflows now follow one rule.

The trade-off is a slower docker workflow, since compilation output is no longer reused between runs. That is the right side to err on: a slow pipeline is an inconvenience, a pipeline that cannot finish is not.

The build filled the runner's disk and died in post-job cleanup:

  Unhandled exception. System.IO.IOException: No space left on device

Every check had passed — cargo check, the test suite, the BDD suite,
rustfmt, all four release binaries. The job only failed while saving its
cache, after 33 minutes.

`actions/cache` was storing the whole `target` directory, and
`restore-keys: docker-` meant each run started from an older, already
bloated cache, added to it, and saved a larger one — so every run raised
the next one's floor. For a workspace building five binaries in both
debug and release that ratchets past the ~14 GB a runner has free.

Replaced with Swatinem/rust-cache, caching registry and git only.
rust.yml already made this exact call, with a comment explaining why;
the two workflows now follow one rule.

The trade-off is a slower docker workflow, since compilation output is
no longer reused between runs. That is the right side to err on: a slow
pipeline is an inconvenience, a pipeline that cannot finish is not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vsilent
vsilent merged commit 996cdca into dev Sep 21, 2026
8 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants