Skip to content

ci(test): free runner disk space before the integration shard build (fixes ENOSPC on main)#6112

Merged
houko merged 2 commits into
mainfrom
ci/free-disk-integration-shards
Jun 15, 2026
Merged

ci(test): free runner disk space before the integration shard build (fixes ENOSPC on main)#6112
houko merged 2 commits into
mainfrom
ci/free-disk-integration-shards

Conversation

@houko

@houko houko commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Problem

Test / Ubuntu (shard 1/4) failed on main (run 27518045628) with the runner annotation:

System.IO.IOException: No space left on device : '/home/runner/actions-runner/.../Worker_*.log'

This is not a test failure — the runner ran out of disk mid-build, before any test executed.

Root cause

The test-ubuntu integration shard job's full-run path runs cargo test --workspace --no-run, which debug-compiles every workspace test binary (each tests/*.rs is its own executable, plus dev-dependencies and librefang-desktop's large static archive). ubuntu-latest leaves only ~14 GB free, and all four full-run shards do this same heavy build, so the disk sits right at the margin — shard 1/4 tipped over it.

This is the same class of failure that hit Test / Unit (lib+bin) in #6089 and nix-build in #6081. Both got a disk-free step; the integration shard lane — the last full-workspace Ubuntu build still exposed — did not.

Fix

Add a Free runner disk space step to test-ubuntu, gated on the same selective-lane skip output as the rest of the job's steps. It removes preinstalled toolchains this job never uses (dotnet, Android SDK, GHC, CodeQL, docker images), reclaiming ~25 GB — identical to the step already in the unit job.

Verification

  • ci.yml still parses as valid YAML (python3 -c "import yaml; yaml.safe_load(...)").
  • Step placement and if: gating match the surrounding gated steps; skipped (selective-lane non-1) shards do not run it.

…fixes ENOSPC on main)

The `Test / Ubuntu (shard N/4)` job's full-run path runs `cargo test --workspace --no-run`, which debug-compiles every workspace test binary — each `tests/*.rs` is its own executable, plus dev-dependencies and librefang-desktop's large static archive — on an ubuntu-latest runner that leaves only ~14 GB free.
All four full-run shards do this same heavy build, so the disk sits at the margin: shard 1/4 overran it on main and the runner died with "No space left on device" mid-build, before any test ran.

Add a Free-runner-disk-space step (gated on the same selective-lane skip as the rest of the job) that removes preinstalled toolchains this job never uses — dotnet, Android SDK, GHC, CodeQL, docker images — reclaiming ~25 GB.
This extends the same fix the unit-test job got in #6089 and nix-build got in #6081 to the integration shard lane, the last full-workspace Ubuntu build still exposed.

Verified: ci.yml still parses as valid YAML.
@github-actions github-actions Bot added no-rust-required This task does not require Rust knowledge area/ci CI/CD and build tooling size/XS < 10 lines changed and removed no-rust-required This task does not require Rust knowledge labels Jun 15, 2026
@houko
houko enabled auto-merge (squash) June 15, 2026 04:16
Two-line comment block condensed to one short line per project style rules.
The PR body carries the full context; inline comments reference only the
non-obvious constraint (disk headroom).
@github-actions github-actions Bot added the no-rust-required This task does not require Rust knowledge label Jun 15, 2026
@houko
houko merged commit cb25fb2 into main Jun 15, 2026
31 checks passed
@houko
houko deleted the ci/free-disk-integration-shards branch June 15, 2026 04:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci CI/CD and build tooling no-rust-required This task does not require Rust knowledge size/XS < 10 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants