Skip to content

Release Process

Versions must be kept in sync:

FileFormat
VERSIONX.Y.Z
internal/cli/commands/executor.govar Version = "X.Y.Z"
CHANGELOG.md## [X.Y.Z] heading
docs/releases/X.Y.Z.mdFull release notes

Before tagging, run the release validator:

Release Validation
go run docs/dev_tasks.go release-validate --version X.Y.Z

This checks:

  1. [1/4] Version sync — VERSION file, commands.go, CHANGELOG all match
  2. [2/4] Quality checksgofmt, go vet, go test ./..., go build
  3. [3/4] Building binary — confirms a clean binary builds
  4. [4/4] Binary version — binary reports the correct version

All four checks must pass before tagging.

Release Process
1. Update versions in all four locationsSection titled “1. Update versions in all four locations”
2. Write release notes in docs/releases/X.Y.Z.mdSection titled “2. Write release notes in docs/releases/X.Y.Z.md”
3. Update CHANGELOG.mdSection titled “3. Update CHANGELOG.md”
4. ValidateSection titled “4. Validate”
go run docs/dev_tasks.go release-validate --version X.Y.Z
5. Tag and pushSection titled “5. Tag and push”
git tag -a vX.Y.Z -m "Release X.Y.Z" git push origin vX.Y.Z

GitHub Actions automatically:

  • Runs go test ./... on every push
  • Builds binaries for linux/amd64, linux/arm64, windows/amd64, darwin/arm64 on tag push
  • Publishes binaries to GitHub Releases
  • Generates qql-go_X.Y.Z_checksums.txt

Release artifacts:

BinaryPlatform
qql-goLinux amd64
qql-goLinux arm64
qql-go.exeWindows amd64
qql-gomacOS arm64
qql-go_X.Y.Z_checksums.txtAll platforms

Install script (install.sh) and PowerShell script (install.ps1) auto-detect platform and download the correct binary.