Release engineering
- Build binaries for supported OS/arch targets
- Produce checksums (and optionally signatures)
- Attach artifacts to a Git tag / GitHub Release
- Keep changelog notes
Common artifact set
mytool-linux-amd64
mytool-linux-arm64
mytool-darwin-arm64
mytool-windows-amd64.exe
checksums.txt
Checksums
sha256sum mytool-* > checksums.txt
Versioning
- For CLIs, semantic versioning is typical (
v1.2.3).
- For modules, Go uses semantic import versioning for v2+ (module path ends with
/v2).
goreleaser
goreleaser is the most common “one tool” approach for building matrices, packaging archives, generating checksums, and publishing GitHub Releases.
Backward compatibility
For DevOps tools used across orgs:
- Avoid breaking flag changes; add flags rather than changing meaning.
- Keep output formats stable or provide
--output json for machine use.
- Consider deprecations: warn for a few releases before removal.