Cut a release
Publishing is entirely CI-driven. Pushing a v* tag runs release.yml, which publishes the fat-JAR and dist zip (GitHub release assets), module jars (GitHub Packages), the Docker image (ghcr.io/spiculedata/saiku:<version>) and the npm embed package. Never mvn deploy locally.
- Bump the version on a branch off
development. Every reactor pom carries the literal release version (non-SNAPSHOT).bashmvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=falseversions:setmissessaiku-bom/pom.xml, so fix that by hand. Check withgit grep -n '<version>OLD' -- '*pom.xml'. - Update
CHANGELOG.mdwith a section for the release, and fold in anydocs/release-notes-*-draft.md. Merge this todevelopmentvia PR. - Cut
release/X.Y.Zoffdevelopmentand push it.release-prep.ymlruns themvn verifygate. - Open a PR from
release/X.Y.Ztomainand merge it once green.gh pr mergecan silently no-op while a required check is pending. Before tagging, confirmmainactually advanced:git fetch && git log -1 origin/mainshould show the release merge and the new version. - Tag the merged
mainHEAD and push the tag.
If you tagged the wrong commit:bashgit tag vX.Y.Z origin/main && git push origin vX.Y.Zgh run cancelthe release run,git push origin :refs/tags/vX.Y.Z,git tag -d vX.Y.Z, then re-tag correctly. - Replace the auto-generated release notes (a raw commit list) with the changelog section:
gh release edit vX.Y.Z --notes-file <file>. - Back-merge
mainintodevelopmentvia achore/back-merge-X.Y.ZPR. - Post-release: bump
LATEST_VERSIONintelemetry/wrangler.toml(PR todevelopment), and redeploy the demo box.


