Add tea, gh and ripgrep to the runner image #8
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/tea-gh-ripgrep"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds the three CLIs that CI here keeps having to work around, and pays for them
by cleaning up build downloads the image was already shipping.
What was actually missing
Inventoried the published image before changing anything:
jqandyqare already in the image viaEXTRA_PACKAGES, so they are leftalone — the suspicion that they were absent was wrong. That leaves
tea,ghand
rg.teacurlagainst/api/v1with a manualAuthorization: tokenheader. Past the 0.14.2 floor for--draft/pulls edit --ready.ghrgAll three are single static binaries fetched by pinned
ARG, verified againstthe upstream checksums file, on both amd64 and arm64.
The
ghtension, stated plainlySomeones.Computerbansghoutright — Forgejo is canonical there, GitHub isa read-only mirror, mirrored CI does not run, and
ghreports stale or absentstate without saying so. GHAR is shared across the org and other repos genuinely
live on github.com, so the binary is here for them.
Installing it must not read as blessing it where it is banned, so the new
README.mdsays so in its own section, and the Dockerfile comment points at it.Size: −29 MiB, not +72
The three binaries are 72.0 MiB installed (gh 39.1, tea 27.7, rg 5.2). While
measuring that I found the image was already shipping its own build downloads —
the OpenTofu and AWS blocks
cd "$(mktemp -d)"and never clean up:That is ~101 MiB re-pulled on every job, since the runners use
force_pullon ashared serialised worker. All three blocks now
trap 'rm -rf "$WORK"' EXIT, whichis in scope precisely because size is the binding constraint on this image:
main)Compressed falls further than uncompressed because what was removed was already-
compressed archives, while what was added is uncompressed ELF.
Both figures are a local
docker build --build-arg PHP_VERSION=8.5ofmainvsthis branch, same host, same base.
What was deliberately not touched
hadolint,markdownlintandactionlintstay out. They are run as pinneddocker images by consumers (
bin/lint-*.shinSomeones.Computer) so CI and alaptop execute byte-identical versions; baking them in would silently break that.
Same for
diveand the Playwright image.README.mdrecords the reasoning so thenext person does not "helpfully" add them.
yqwas listed as optional-if-a-caller-exists — moot, it was already installed.Verification
the build rather than the job that needs it.
mainpublishes both, so a broken arm64 path would not fail until after merge.Built the install block for
linux/arm64separately — all three fetch,checksum-verify and run.
hadolintproduces no new class of warning; the new block draws the sameDL4006/DL3003/SC3040 trio the existing
TOFU_INSTALLandAWS_TOOLS_INSTALLblocks already do (false positives — the file sets
SHELL ["/bin/bash", "-c"]).README.mdis clean underSomeones.Computer's.markdownlint.yaml.One claim in an early draft was wrong and is corrected in the final comment:
ripgrepis packaged by Alpine on every base we build, including 3.15. Theactual reason for the upstream archive is version consistency — apk gives 13.0.0
on the php7.4 base against 14.1.1 on php8.5, so a workflow's
rgwould depend onwhich PHP tag it ran under. Same argument the OpenTofu block already makes.
Follow-up, not in this PR
Someones.Computer's.github/workflows/cancel-merged.ymland.github/actions/dispatch-workflow/action.ymlcan drop their hand-rolledcurl+php -rJSON filtering fortea apinow. Separate repo, separate PR.docs/claude-in-ci-plan.html, branchdocs/claude-in-ci-proposal) also wants a pinned entry here withDISABLE_UPDATES=1/DISABLE_INSTALLATION_CHECKS=1. Left out deliberately —that proposal is not approved yet, and this PR should not presuppose it.
Add tea, gh and ripgrep to the runner imageto WIP: Add tea, gh and ripgrep to the runner imageWIP: Add tea, gh and ripgrep to the runner imageto Add tea, gh and ripgrep to the runner image