Release Process (gsc-cli)
Preconditions
- •Repo is clean.
- •
HOMEBREW_TAP_GITHUB_TOKENexists in repo secrets. - •Release tag does not already exist (
git tag --list vX.Y.Z).
Steps
- •Create release branch:
git checkout -b release/vX.Y.Z - •Update changelog in
CHANGELOG.md:- •Keep
## [Unreleased]at the top. - •Add
## [X.Y.Z]. - •Include user-facing changes only.
- •Ensure each entry has a link to the PR that introduced the change.
- •Keep
- •Run preflight checks:
- •
gofmt -w . - •
go vet ./... - •
go test ./... - •
go build ./...
- •
- •Run release dry-run:
- •Preferred:
goreleaser release --snapshot --clean - •Fallback if
goreleaseris not installed:go run github.com/goreleaser/goreleaser/v2@latest release --snapshot --clean
- •Preferred:
- •Commit and open PR:
- •Commit changelog changes.
- •Push branch and open PR to
main. - •PR title:
chore(release): X.Y.Z
- •Merge PR after CI is green.
- •Sync and tag:
- •
git checkout main && git pull --ff-only - •
git tag vX.Y.Z && git push origin vX.Y.Z
- •
- •Verify publish:
- •Watch release workflow:
gh run watch - •Confirm release/assets:
gh release view vX.Y.Z - •Confirm tap update landed on
jpreagan/homebrew-tap.
- •Watch release workflow:
Conventions
- •Follow semver:
- •patch = fixes
- •minor = features
- •major = breaking changes
- •Branch:
release/vX.Y.Z - •PR title:
chore(release): X.Y.Z - •Tag:
vX.Y.Z
Notes
- •Do not include secrets or token values in changelog, logs, or PR descriptions.