ci: GoReleaser for cross-platform CLI releases + Homebrew#11
Merged
Conversation
Ship the medea CLI as prebuilt binaries and a Homebrew cask. Now that the 1Password SDK builds CGO-free (service-account auth), GoReleaser cross-compiles darwin/linux × amd64/arm64 from one runner. - .goreleaser.yaml: pure-Go (CGO_ENABLED=0) builds, tar.gz archives, checksums, changelog, GitHub release (prerelease: auto for -rc/-beta tags), and a Homebrew cask pushed to crunchloop/homebrew-tap (with a macOS quarantine-strip postflight for the unsigned binary). - cmd/medea: stamp main.version at build time -> `medea --version`. - .github/workflows/release.yml: on `v*` tags, run `goreleaser release`. Container images stay in build.yml for now; folding them into GoReleaser (and flipping the server image to pure-Go) is the next PR. Verified locally with `goreleaser check` and `goreleaser release --snapshot` (all four targets build; version stamp + cask confirmed). Prereqs before first stable release: create crunchloop/homebrew-tap and add a HOMEBREW_TAP_GITHUB_TOKEN secret (PAT with contents:write on the tap). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
Ships the
medeaCLI as prebuilt binaries and a Homebrew cask. Now that the 1Password SDK builds CGO-free (PR #10), GoReleaser cross-compiles darwin/linux × amd64/arm64 from a single runner..goreleaser.yaml— pure-Go (CGO_ENABLED=0) builds,tar.gzarchives, checksums, changelog, GitHub release (prerelease: autofor-rc/-betatags), and a Homebrew cask pushed tocrunchloop/homebrew-tap(with a macOS quarantine-strippostflightfor the unsigned binary).cmd/medea— stampsmain.versionat build time →medea --version..github/workflows/release.yml— onv*tags, runsgoreleaser release.Usage once merged
Then:
brew install crunchloop/tap/medea.Verification
goreleaser check✅ andgoreleaser release --snapshot✅ — all four targets build,--versionstamp confirmed (medea version 0.0.1-next), cask generated correctly (both OSes/arches + quarantine postflight).Prerequisites before the first stable release
crunchloop/homebrew-taprepo.HOMEBREW_TAP_GITHUB_TOKEN— a PAT withcontents:writeon the tap (GITHUB_TOKENis scoped to this repo and can't push to the tap). Prereleases skip the tap, so an-rctag works without it.Scope / follow-up
Container images stay in
build.ymlfor now (untouched, still builds fine against the new SDK). Next PR folds multi-arch images into GoReleaser and flips the server image to pure-Go/distroless-static— landed alongside the deferred 1Password smoke test.🤖 Generated with Claude Code