Skip to content

fix(image): put the rust toolchains where a job can actually see them - #320

Merged
rldyourmnd merged 1 commit into
mainfrom
fix/rust-toolchains-live-where-the-runner-looks
Aug 31, 2026
Merged

fix(image): put the rust toolchains where a job can actually see them#320
rldyourmnd merged 1 commit into
mainfrom
fix/rust-toolchains-live-where-the-runner-looks

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

The staged b19 failed its smoke: channels lived in /usr/local/rustup behind /etc/environment, which neither the smoke nor any real job ever reads — runuser starts the runner without pam_env. rustup now installs in the runner home as the runner (the shape bun already uses), shims point there, and both smokes verify channels/clippy/rustfmt/default as the runner user. Recipe fingerprint golden moved with the recipe.

https://claude.ai/code/session_01LsGid6U5RrQdFvJmvYdGCF

The b19 build survived provisioning and failed its own smoke: `rustup run
1.98.0` found no toolchain. The smoke was right twice over -- the channels
were installed system-wide under /usr/local/rustup and exported through
/etc/environment, and no job would ever have seen them either: runuser
starts the runner without pam_env, so no login file reaches a job's
environment. The root-eye view was green while every job saw nothing.

rustup now installs in the runner's own home, as the runner, which is where
actions-rust-lang/setup-rust-toolchain and a bare cargo resolve toolchains
-- the same shape bun already uses in this image. The /usr/local/bin shims
point into the runner's cargo bin, and both smoke scripts verify every
pinned channel, clippy, rustfmt and the default exactly as the runner user,
so a root-visible-only install can never pass again. Workers are disposable
one-job containers, so runner ownership shares nothing with a later job.

Claude-Session: https://claude.ai/code/session_01LsGid6U5RrQdFvJmvYdGCF
@rldyourmnd
rldyourmnd merged commit 0c40007 into main Aug 31, 2026
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.

1 participant