Releasing¶
Releases are automated via GoReleaser and GitHub Actions.
Release workflow¶
flowchart LR
Tag["git tag vX.Y.Z"] --> Push["git push origin tag"]
Push --> GHA["GitHub Actions"]
GHA --> Build["Cross-platform build"]
Build --> Publish["GitHub Release"]
Push a semantic version tag to trigger a release:
The release workflow builds cross-platform binaries (Linux, macOS, Windows on amd64 and arm64) and publishes them to GitHub Releases.
Pre-release checklist¶
-
make cipasses on the release commit -
make release-checkvalidates GoReleaser config -
make snapshotproduces expected artifacts in./dist/ -
CHANGELOG.mdis up to date (make changelogif needed)
Tags are immutable
A pushed tag triggers a published release. Verify the snapshot build before tagging. To fix a bad release, publish a new patch version rather than reusing the tag.
Validate locally¶
Snapshot artifacts are written to ./dist/ without publishing.
Changelog¶
Release notes are generated from conventional commits using git-cliff: