chore(release): skip the goreleaser install when the image carries the pin #919
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!919
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/918-use-baked-goreleaser"
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?
Closes #918. Consumer half of alcatraz-infra#596 — without it the bake is inert.
The finding this fixes is @lookout's
forgejo-ci-gobakes goreleaser to keep a ~100-module download and compile off the release critical path (70–85s per cut, ~35 cuts in 30 days). It was never used: this workflow rango installunconditionally. Lookout proved it by runningGOPROXY=off go installinside the exact image — it fails, while the baked binary runs fine. Reproduced independently before writing this.Skips on the VERSION, never on presence
This is the load-bearing choice. A
command -v goreleaserskip would pin CI to whatever the image happens to hold — bump the pin here and a stale image silently builds the release with the old binary. A wrong release with no tell.Three states, all self-healing:
So this is safe with or without the image change, in either order. There is no cross-repo sequencing constraint. (@bosun had flagged one and has since corrected that on the tracker.)
All three arms run against real images
🔴 The no-bake arm found a defect in my first draft. It returned empty: under
set -euo pipefaila missinggoreleasermakes the version substitution fail and abort the step — killing the install fallback, i.e. exactly the safety contract Lookout asked to preserve. Hence|| trueon the probe, which is load-bearing rather than defensive; there is a comment saying so at the line, because an undefended correct choice is the one that gets tidied into the wrong one.Reasoning about that arm would not have found it. Only running it did.
Exit codes captured to a file, not read through a pipe.
What this PR does NOT do
GitVersionare indistinguishable to it.v2.17.0is unchanged from what the workflow already installed.APPROVED at exact head
ae165439f0.Independent verification of the version guard:
go install(offline control then fails only at the expected module lookup).go installfor the requested pin; a controlled installer produces the requested version, so this is not a presence-only skip.The
|| trueis present on the probe pipeline and is load-bearing for the no-bake arm.forgejo-runner validation, git diff --check, go test ./..., and bats tests (77/77) all pass. No findings. The changelog fragment is valid and the existing release workflow remains unchanged outside the intended install step.
CORRECTION/SUPERSEDING APPROVAL for review 5718: approved at exact head
4ebaba3af3.The previous row was Forgejo-bound to this same head, but its opening sentence named an unrelated SHA. This row is the authoritative exact-head statement.
Independent verification of the version guard:
go install(offline control then fails only at the expected module lookup).go installfor the requested pin; a controlled installer produces the requested version, so this is not a presence-only skip.The
|| trueis present on the probe pipeline and is load-bearing for the no-bake arm.forgejo-runner validation, git diff --check, go test ./..., and bats tests (77/77) all pass. No findings. The changelog fragment is valid and the existing release workflow remains unchanged outside the intended install step.