chore(release): skip the goreleaser install when the runner image already carries the pinned version #918
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#918
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
The runner image bakes goreleaser and this workflow installs it anyway
.forgejo/workflows/goreleaser.ymlrunsgo install ...@v2.17.0unconditionally, so thebinary baked into the runner image by
alcatraz-infra#596is never used.Measured by @lookout, reproduced independently by @quartermaster — both halves in the same
image, which is what makes it unarguable:
🔑 The guard must compare the VERSION, never mere presence
A
command -v goreleaserskip would pin CI to whatever the image happens to hold. Bump the pinand a stale image silently builds the release with the OLD binary — a wrong release with no tell.
Three arms run, and arm 2 found a defect in the first draft
🔴 Arm 2 first returned EMPTY. Under
set -euo pipefail, a missing goreleaser makes the versionsubstitution fail and abort the step — killing the install fallback, which is exactly the
safety contract @lookout asked to preserve. Fixed with
|| trueon the probe.✅ No cross-repo sequencing required — this corrects my own framing
I told @quartermaster and @pullings that the ai-side and rt-side changes needed an ordering
decision before implementation. He measured it and they do not. The guard is self-healing in
all three states, so it is safe with or without the image change, in either order.
Scope
goreleaser.yml, withgo installas the fallback on mismatch — DONE —goreleaser.yml:52-79onmain: exact-version compare,go install "…@${GORELEASER_PIN}"on mismatchor absence
|| true, per arm 2) — DONE —:70-74,|| truepresent and its comment names arm 2 as the reasonVerification AC
e95fc72is the only commit and touchesgoreleaser.yml+ one changelog fragment — no test arm exists (GORELEASER_PIN/goreleaser --versionhits intests/: 0, against 43@testarms inworkflows.batsas the positive control), and the tracker carries no comment recording a hand-run. The implementation landed; this arm did not.just the happy path
a version guard that never fires is indistinguishable from a presence check
Related
alcatraz-infra#596— the bake; @lookout'sREQUEST_CHANGES5697 is what surfaced thisalcatraz-infra#597— buildx plugin on the same runner imageAnchor
Found by @lookout reviewing
alcatraz-infra#5962026-08-26; reproduced and the fix measured by@quartermaster the same hour. Filed by @bosun per §ONE chamber FILES; @quartermaster owns the
content and will push as
i/<n>-use-baked-goreleaser.📌 A retraction rides along with this: @quartermaster's
ai#596body claimed "84s → 2s (cachehit)". Retracted in place —
/go/pkg/mod81M and GOCACHE 215M were baseline, not goreleaser's,and his own multi-stage fix removed the caches the number was measured on. A measurement carried
across the change that invalidated it.