with one click
release
// Create GitHub releases for the grpc-dispatcher-go library by tagging the repo with the appropriate semver version.
// Create GitHub releases for the grpc-dispatcher-go library by tagging the repo with the appropriate semver version.
| name | release |
| description | Create GitHub releases for the grpc-dispatcher-go library by tagging the repo with the appropriate semver version. |
| disable-model-invocation | true |
Tag and push a new semver release for the grpc-dispatcher-go library.
Detect upstream remote โ find the remote that points to kubetail-org/grpc-dispatcher-go:
git remote -v | grep 'kubetail-org/grpc-dispatcher-go' | head -1 | awk '{print $1}'
Store the result as {upstream}. If no remote matches, stop and ask the user which remote to use.
Verify branch and state:
git fetch {upstream} to update remote refsgit status -uno to confirm working tree is cleangit rev-parse HEAD and git rev-parse {upstream}/main to confirm HEAD is at {upstream}/mainIf working tree is dirty or HEAD is not at {upstream}/main, stop and ask the user to resolve before continuing.
Find latest tag:
git tag --list "v*" | sort -V | tail -1
Check for changes since latest tag โ run:
git log {latest-tag}..HEAD --oneline
Determine new version using semver โ analyze commits:
Z+1): bug fixes, tests, docs, refactors, chores, ci changesY+1, reset Z=0): new backwards-compatible featuresX+1, reset Y=0, Z=0): breaking changesUse conventional commit prefixes as hints (fix: โ patch, feat: โ minor, BREAKING CHANGE โ major), but read the actual messages to make a judgment call.
Confirm with user before tagging โ present a summary:
Current tag | New tag | Reason
-------------|------------|-------
v0.1.5 | v0.2.0 | new feature: ...
Wait for explicit user confirmation before proceeding.
Tag and push:
git tag -s v{X.Y.Z} -m "release: v{X.Y.Z}"
git push {upstream} v{X.Y.Z}
Confirm the push succeeded.
--no-verify or --force when pushing tags.git status shows uncommitted changes, stop immediately and tell the user to commit or stash first.{upstream}/main, stop immediately and tell the user to check out {upstream}/main first.