feat(release): publish a Homebrew tap on every release - #29
Merged
Merged
Conversation
Review findings on the Homebrew tap change: - Added a test proving .goreleaser.yaml's brews[0].description actually matches root.go's Short field, instead of relying on two copies never drifting apart by discipline alone -- confirmed it fails if either string changes without the other. - ADR 011 now says plainly that the actual push to homebrew-tap is untested end-to-end (the repo is real but empty, and --skip=publish never exercises the real token) -- the same category of gap the Docker image's QEMU/buildx issue turned out to be, caught only by watching the first real run instead of assuming success from local testing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Publishes a formula to
NikitaMikhailov/homebrew-tapon every release, via GoReleaser'sbrews:.brew install nikitamikhailov/tap/dashsyncworks after this.brews, nothomebrew_casks, deliberately —brewsis deprecated in the pinned GoReleaser version, but its documented replacement (homebrew_casks) is macOS-only with no Linux/Linuxbrew support at all, and dashsync ships Linux binaries as a first-class target. Switching would silently drop Linux Homebrew users to satisfy a linter-shaped concern. See docs/decisions/011.Consequence:
goreleaser checkwas removed fromci.yml— it fails unconditionally (exit 2, no suppression flag) on the deprecated-but-deliberately-keptbrewsfield, regardless of whether anything's actually broken. The existingdocker-build-checkjob'srelease --snapshot --skip=publishrun already exercises the same config more thoroughly (it builds every target, not just checks schema) and only warns on the deprecation — verified this holds for real errors too by injecting a deliberate typo and confirming bothcheckand the snapshot build fail identically on it.Test plan
.goreleaser.yaml's formula description actually matchesroot.go'sShortfield, rather than trusting two manual copies not to drift.homebrew_casks's Linux gap (fetched GoReleaser's docs/schema directly),check's unconditional failure, that a real config error still fails bothcheckand snapshot mode identically, and the generated formula covers all 4 platform combinations correctly with no token leakage anywhere.homebrew-tapneeds the real token, which no local/CI dry run exercises — documented plainly in the ADR rather than assumed to work. Will watch the first real tag push closely.go build/go test ./... -race/golangci-lint runall clean.