The project follows Semantic Versioning. The API group is currently v1alpha2, meaning breaking changes to the CRD schema may occur in minor releases until the API is promoted to v1beta1.
Before tagging a release, verify the following:
-
charts/chainplane/Chart.yaml— bump bothversion(chart semver) andappVersion(operator image tag, e.g.v0.X.Y) -
CHANGELOG.md— add an entry for the new version describing notable changes, new chains, bug fixes - All CI workflows are green on the commit you intend to tag (check Actions tab)
- No pending lint or vet issues (
go vet ./...passes locally)
Tagging a commit triggers the release.yml workflow automatically:
git tag v0.X.Y
git push origin v0.X.YThat's it. The workflow handles everything else.
- Sanity check — runs
go build ./... && go vet ./...to catch compilation errors. - Multi-arch image build — builds
linux/amd64andlinux/arm64images via Docker Buildx and pushes them to GHCR:ghcr.io/tazhate/chainplane:v0.X.Yghcr.io/tazhate/chainplane:latest
- Helm chart package — runs
helm package charts/chainplane --version 0.X.Y(thevprefix is stripped automatically), producingchainplane-0.X.Y.tgz. - GitHub Release — creates a GitHub Release on the tag with auto-generated release notes and attaches the Helm chart
.tgzas a release asset.
GHCR packages are private by default on the first push to a new repository. After the first release:
- Go to
https://github.com/tazhate?tab=packages - Find
chainplane - Click Package settings → Change visibility → Public
Subsequent pushes to the same package will remain public. Verify with:
docker pull ghcr.io/tazhate/chainplane:v0.X.YCheck that the .tgz is attached to the GitHub Release:
gh release view v0.X.Y --repo tazhate/chainplaneIf you maintain a static Helm repository (e.g. via GitHub Pages), re-run helm repo index and push the updated index.yaml.