Releasing
Releases are automated with release-please. On every push to main:
.github/workflows/release.ymlruns the test gate (go vet+go test), then release-please opens or updates a Release PR that bumps.release-please-manifest.jsonand writesCHANGELOG.mdfrom Conventional Commits.- Merging the Release PR creates a GitHub Release and a
vX.Y.Ztag, and the same workflow then publishes:- the container image to GHCR (
ghcr.io/<owner>/baleia:vX.Y.Z), stamped with the release version via-ldflags(internal/version); - the Helm chart to
oci://ghcr.io/<owner>/charts/baleiaand as a.tgzasset on the Release.
- the container image to GHCR (
- Install the released chart with
helm install baleia oci://ghcr.io/<owner>/charts/baleia --version X.Y.Z. - A failed publish can be retried with
workflow_dispatch, passing the existingvX.Y.Ztag.
Commit conventions drive the version: feat: → minor, fix: → patch, feat!: / BREAKING CHANGE: → major.
Do not let a bot rewrite the Release PR body: release-please needs its marker to recognise the merged release. The workflow fails loudly if a chore(main): release merge produces no tag, instead of silently reopening the next release with every commit since the bootstrap SHA.