ci: add plur's CI toolchain image definition - #111
Open
rsanheim wants to merge 1 commit into
Open
Conversation
Plur's Crow workflows run on a prebuilt toolchain image whose Containerfile lives in no repository - it exists only as built state, so nothing here can rebuild it, audit what plur is tested against, or recover it if it is lost. It has also drifted: it predates the Go 1.26.5 bump, so every run pays a toolchain download, and its bundler is older than the lockfiles' BUNDLED WITH, so every bundle invocation pays a self-reinstall. Adds the definition only: debian trixie-slim plus the toolchain .mise.toml already pins (ruby, go, goreleaser, shellcheck, hyperfine), the apt tools the suite needs (sqlite3 for the rails fixture's migration checks, tmux for the watch REPL specs), and bundler matching the lockfiles. No workflow switches to it here. Building and publishing is handled by shared CI tooling rather than a per-repo build script, so this change is inert with respect to CI behavior. See rsanheim/infra#96. Also pins goreleaser to 2.16.0 (was a floating major, while the workflows install a specific version), adds hyperfine, and sets ruby.compile=false so ruby is never built from source.
rsanheim
force-pushed
the
rjs/plur-ci-image
branch
from
August 5, 2026 05:34
ca8145b to
41c75b1
Compare
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.
Why
Plur's Crow workflows run on a prebuilt toolchain image, but that image's Containerfile does not live in this repository — or any other. It exists only as built state, which means nothing here can rebuild it, audit what plur is actually tested against, or recover it if it's lost. It also drifts: the image predates the Go 1.26.5 bump, so every run pays a toolchain download, and its bundler is older than the
BUNDLED WITHin our lockfiles, so everybundleinvocation pays a self-reinstall.What
Adds
ci/images/plur-ci.Containerfile— the definition only:debian:trixie-slimplus the toolchain.mise.tomlalready pins (ruby, go, goreleaser, shellcheck, hyperfine), so a toolchain bump is a one-line change there and a rebuild.sqlite3for the rails fixture's migration checks,tmuxfor the watch REPL specs.Also in
.mise.toml: pin goreleaser to2.16.0(it was a floating major, while the workflows install a specific version), add hyperfine, and setruby.compile = falseso ruby is never built from source.What this deliberately does not do
No workflow switches to this image. Building and publishing it is handled by shared CI tooling rather than a per-repo build script — see rsanheim/infra#96. So this PR is inert with respect to CI behavior: it adds a file and two pins, and every workflow keeps running exactly as it does today.
An earlier version of this branch also added a repo-local build workflow and build script. Those are dropped: that work belongs in shared tooling, not duplicated per repo.
Verified
mise lsresolves the full pinned set (ruby 4.0.6, go 1.26.5, goreleaser 2.16.0, hyperfine 1.19.0, shellcheck 0.11.0), and bundler installs.runuseranduseraddare present for the benchmark workflow's unprivileged user.