Skip to content

ci: add plur's CI toolchain image definition - #111

Open
rsanheim wants to merge 1 commit into
mainfrom
rjs/plur-ci-image
Open

ci: add plur's CI toolchain image definition#111
rsanheim wants to merge 1 commit into
mainfrom
rjs/plur-ci-image

Conversation

@rsanheim

@rsanheim rsanheim commented Aug 3, 2026

Copy link
Copy Markdown
Owner

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 WITH in our lockfiles, so every bundle invocation pays a self-reinstall.

What

Adds ci/images/plur-ci.Containerfile — the definition only:

  • debian:trixie-slim plus the toolchain .mise.toml already pins (ruby, go, goreleaser, shellcheck, hyperfine), so a toolchain bump is a one-line change there and a rebuild.
  • The apt tools the suite genuinely needs: sqlite3 for the rails fixture's migration checks, tmux for the watch REPL specs.
  • Bundler pinned to match the lockfiles.

Also in .mise.toml: pin goreleaser to 2.16.0 (it was a floating major, while the workflows install a specific version), add hyperfine, and set ruby.compile = false so 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

  • Image builds under amd64 emulation; mise ls resolves 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.
  • Runtime smoke as root, which is how CI steps run: ruby, goreleaser, hyperfine, sqlite3, tmux, and bundle all resolve on PATH; runuser and useradd are present for the benchmark workflow's unprivileged user.
  • Branch is current with main.

Base automatically changed from rjs/crow-ci-quick-wins to main August 4, 2026 00:47
@rsanheim rsanheim changed the title Crow CI: plur-owned toolchain image (replaces orphaned clarice-ci-ruby) ci: add plur's CI toolchain image definition Aug 5, 2026
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
rsanheim force-pushed the rjs/plur-ci-image branch from ca8145b to 41c75b1 Compare August 5, 2026 05:34
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