fix(image): put the rust toolchains where a job can actually see them - #320
Merged
Merged
Conversation
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
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.
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