Skip to content

Verify the release pipeline and document distribution (GH-47) - #95

Merged
Ilyes512 merged 4 commits into
mainfrom
chore/GH-47-verify-release
Aug 11, 2026
Merged

Ilyes512 merged 4 commits into
mainfrom
chore/GH-47-verify-release

Conversation

@Ilyes512

Copy link
Copy Markdown
Member

Summary

  • task release:dry-run was broken. The pinned goreleaser image shipped Go 1.26.1 with
    GOTOOLCHAIN=local, so every dry-run died on go.mod requires go >= 1.26.5 before building
    anything. Image bumped to v2.17.1 and GOTOOLCHAIN=auto, so go.mod is the only toolchain pin —
    the same thing the release workflow does via go-version-file.
  • Verified by hand, once the dry-run ran: four binaries (linux/darwin × amd64/arm64),
    four archives each carrying labelsync/LICENSE/README.md, checksums.txt, and a rendered cask.
    A tagged non-snapshot build in a scratch clone (--skip=publish,validate,announce) tagged
    v0.1.0-rc.1 produced a binary reporting labelsync version 0.1.0-rc.1 and a cask pinned to the
    same string — so the -X .../internal/cmd.Version injection reaches labelsync version.
    goreleaser check validates the config.
  • HOMEBREW_TAP_GITHUB_TOKEN is present as an organisation secret visible to this repository,
    and specsnl/homebrew-tap is writable (admin) with a Casks/ directory that already holds
    specs.rb.
  • New tests over .goreleaser.yml: the platform matrix, CGO_ENABLED=0, the tap coordinates,
    that the secret the cask reads is the one the workflow passes, and the xattr -dr com.apple.quarantine hook. Each of those can go missing without anything going red today.
  • New architecture page, docs/content/docs/architecture/distribution.md: the pipeline, the
    three install channels and which report a real version, the cask and its token, and how to verify
    it all without publishing.
  • README loses the Work in progress notice and the "Once released:" hedge.

Left for after this merges

Tagging v0.1.0-rc.1 for real, then verifying brew install specsnl/tap/labelsync and
go install ...@latest against the published release — those need the release to exist, and the
release should contain this branch. Those three boxes in the issue stay unticked until then.

Closes #47

The pinned goreleaser image shipped Go 1.26.1 with GOTOOLCHAIN=local, so
every dry-run died on `go.mod requires go >= 1.26.5` before it built a
single binary. Bump the image and let go.mod pin the toolchain, the way
the release workflow already does via go-version-file.
The platform matrix, the static linking, the tap coordinates, the secret
name, and the quarantine hook are all things a release ships or fails to
ship without anything going red. The pipeline was verified by hand once;
this is what keeps it verified.
A new architecture page for distribution: what a release produces, the
three install channels and which of them report a real version, why the
cask needs its own token and its own quarantine hook, and how to verify
all of it without publishing anything.
The release pipeline is verified and v0.1.0-rc.1 is next, so the notice
stops being true. A shipped tool whose README says it is not ready to
use is worse than no notice at all.
@Ilyes512
Ilyes512 force-pushed the chore/GH-47-verify-release branch from 268017d to 3757d1f Compare August 11, 2026 14:13
@Ilyes512
Ilyes512 merged commit cb2cae0 into main Aug 11, 2026
5 checks passed
@Ilyes512
Ilyes512 deleted the chore/GH-47-verify-release branch August 11, 2026 14:21
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.

Verify goreleaser and the Homebrew tap end to end

1 participant