2.2 KiB
2.2 KiB
| summary |
|---|
| Release checklist for discrawl (GitHub release binaries via GoReleaser + Homebrew tap update) |
Releasing discrawl
Always do all steps below. No partial releases.
Assumptions:
- Repo:
steipete/discrawl - Binary:
discrawl - GoReleaser config:
.goreleaser.yaml - Homebrew tap repo:
~/Projects/homebrew-tap
0) Prereqs
- Clean working tree on
main - Go toolchain from
go.mod - GitHub CLI authenticated
- CI green on
main
1) Verify build + tests
go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11.1 run
go test -count=1 ./... -coverprofile=coverage.out
go tool cover -func=coverage.out | tail -n 1
go test -count=1 -race ./...
go build -o /tmp/discrawl ./cmd/discrawl
gh run list -L 5 --branch main
Coverage floor: 85%+
2) Update changelog
Add a new section in CHANGELOG.md.
Example:
## 0.2.0 - 2026-03-08
3) Commit, tag, push
git checkout main
git pull --ff-only origin main
git commit -am "release: vX.Y.Z"
git tag -a vX.Y.Z -m "Release X.Y.Z"
git push origin main --tags
4) Verify GitHub release assets
The tag push triggers .github/workflows/release.yml.
gh run list -L 5 --workflow release.yml
gh release view vX.Y.Z
Confirm assets exist for:
darwin_amd64darwin_arm64linux_amd64linux_arm64windows_amd64windows_arm64
5) Update Homebrew tap
discrawl ships a binary formula in ~/Projects/homebrew-tap/Formula/discrawl.rb that points at the GitHub release archives.
After tagging a real release:
- update the formula
version - update the per-platform release archive
sha256values - test local install + version output
- commit + push
homebrew-tap
Useful commands:
curl -L -o /tmp/discrawl-darwin-arm64.tgz https://github.com/steipete/discrawl/releases/download/vX.Y.Z/discrawl_X.Y.Z_darwin_arm64.tar.gz
shasum -a 256 /tmp/discrawl-darwin-arm64.tgz
brew uninstall discrawl || true
brew install steipete/tap/discrawl
discrawl --version
brew info steipete/tap/discrawl
Notes
- Build-time version stamping comes from
-X github.com/steipete/discrawl/internal/cli.version={{ .Version }} - If release workflow needs a rerun:
gh workflow run release.yml -f tag=vX.Y.Z