with one click
with one click
| name | release |
| description | Release a new version of the Go SDK |
Release a new version of the S2 Go SDK.
This project uses git tags for versioning and git-cliff for automatic changelog generation. The release workflow is triggered when a version tag (vX.Y.Z) is pushed to the repository.
Release automation:
task release:prepare - Creates a release branch with updated CHANGELOG.mdtask release:tag - Tags the release after the PR is merged/release [VERSION]
If VERSION is not provided, determine the next version by analyzing commits since the last release.
If no version is provided, analyze commits to suggest one:
git fetch origin --tags
git log $(git describe --tags --abbrev=0)..HEAD --oneline
Apply semantic versioning rules:
fix: commits โ patch bump (e.g., v0.11.9 โ v0.11.10)feat: commits โ minor bump (e.g., v0.11.9 โ v0.12.0)feat!: or BREAKING CHANGE: โ major bump (e.g., v0.11.9 โ v1.0.0)Get the current version:
git describe --tags --abbrev=0
gh pr list --search "release-v" --state open
If a release PR already exists, skip to step 5.
Run the prepare task (creates branch with updated changelog):
task release:prepare VERSION=X.Y.Z
This will:
release-vX.Y.Z-<timestamp>)chore(release): vX.Y.Zgit push -u origin HEAD
gh pr create --title "chore(release): vX.Y.Z" --body "$(cat <<'EOF'
## Release vX.Y.Z
### Changelog
See CHANGELOG.md for details.
### Checklist
- [ ] Changelog looks correct
- [ ] CI passes
- [ ] Ready to release
EOF
)"
Review the changelog diff:
gh pr diff <PR_NUMBER> -- CHANGELOG.md
Compare with commits since last release to ensure nothing is missing.
Ensure all tests pass:
task test
task lint
Once CI passes and changelog is verified:
gh pr merge <PR_NUMBER> --squash
After the PR is merged, create and push the tag:
task release:tag VERSION=X.Y.Z
git push origin vX.Y.Z
This triggers the GitHub release workflow which:
Check the release was created:
gh release view vX.Y.Z
Check workflow status:
gh run list --workflow=release.yml
Verify Go module is available:
curl -s "https://proxy.golang.org/github.com/s2-streamstore/s2-sdk-go/@v/vX.Y.Z.info"
vX.Y.Z (semver with v prefix)chore: commits are excluded from the changelog