This document explains how to create releases for the Pinot Go Client library using the simplified GitHub Actions workflow.
The release process is streamlined and manual. You trigger the workflow with a tag input, and it will:
- Validate tag format - Ensure semantic versioning format
- Check tag availability - Verify the tag doesn't already exist
- Create and push tag - Run
git tagandgit pushcommands - Generate changelog - Create release notes from commit history
- Publish release - Create a GitHub release page
Before creating a release, make sure:
- All changes are committed and pushed to
master - You've decided on the version number (e.g., v1.2.3)
- Go to the Actions tab in your GitHub repository
- Click on "Release" workflow
- Click "Run workflow" button
- Enter your desired tag (e.g.,
v1.2.3) - Click "Run workflow"
The workflow will automatically:
- Create the git tag
- Push the tag to remote
- Generate changelog from commit history
- Create a GitHub release page
Once the workflow completes successfully:
- A GitHub release will be created with changelog
- Go developers can install the new version with:
go get github.com/startreedata/pinot-client-go@v1.2.3
The workflow validates tag formats and only accepts:
- Stable releases:
v1.2.3,v2.0.0,v1.15.7 - Pre-releases:
v1.2.3-alpha,v1.2.3-beta,v1.2.3-rc1
Invalid examples:
1.2.3(missing 'v' prefix)v1.2(missing patch version)release-1.2.3(wrong format)
- Changelog generated from commit messages since the last release
- Installation instructions
- Usage examples
- Link to full changelog on GitHub
If a release adds or changes broker behavior, include a short usage note so users can copy/paste.
Example snippet:
## Usage (Broker)
Pinot brokers can be queried over gRPC when `pinot.broker.grpc.port` is enabled.
```go
pinotClient, err := pinot.NewWithConfig(&pinot.ClientConfig{
BrokerList: []string{"localhost:8010"},
GrpcConfig: &pinot.GrpcConfig{
Encoding: "JSON", // or "ARROW"
Compression: "ZSTD",
BlockRowSize: 10000,
Timeout: 5 * time.Second,
},
})
```For stable releases, the workflow also updates major version tags (e.g., v1 for v1.2.3) to allow users to get the latest version within a major version.
Pre-releases (tags containing -alpha, -beta, -rc, etc.) are:
- Marked as "Pre-release" in GitHub
- Not considered as the "Latest" release
- Suitable for testing and preview versions
If you get an error that the tag already exists:
- Choose a different version number, or
- Delete the existing tag first:
git tag -d v1.2.3 git push origin :refs/tags/v1.2.3
If the release workflow fails:
- Check the workflow logs in the Actions tab
- Common issues:
- Invalid tag format (fix and re-run)
- Tag already exists (use different version)
- Network issues (retry the workflow)
You can also create releases manually without the workflow:
-
Create and push tag locally:
git tag v1.2.3 git push origin v1.2.3
-
Go to the Releases page in your GitHub repository
-
Click "Create a new release"
-
Select your tag
-
Fill in the release notes
-
Publish the release
However, the automated workflow is recommended for consistency.