Release Process¶
This project should publish releases as repeatable, reviewable changes rather than ad hoc tag pushes.
Use this page together with:
release-checklist.mdfor the operator checklistrelease-gates.mdfor ship / no-ship criteriapublic-api.mdandstability.mdwhen evaluating compatibility and experimental scope
Release Checklist¶
- Ensure
mainis green in CI. - Run
task -t .dev/Taskfile.yaml release-preflight. - Review dependency, security, and CodeQL workflow results.
- Update
CHANGELOG.mdand any release notes if the preflight surfaced missing scope notes. - Confirm documentation and samples match the released API.
- Run
task -t .dev/Taskfile.yaml release -- <version>to set the release version, updateCHANGELOG.md, commit, tag, and push. - Run
task -t .dev/Taskfile.yaml bump -- patchafter the release if you want to movemainto the next patch snapshot. - Push the snapshot bump commit if you created one locally.
- Run the
Publish Maven Centralworkflow manually with the exact release tag after the tag is in GitHub.
Release Preflight¶
release-preflight is the required local gate before release.
It runs, in order:
./mvnw -B -ntp -Pquality verify- strict documentation build
./mvnw -B -ntp -DskipTests install- maintained sample verification for:
samples/java-maven-examplesamples/java-maven-codegen-examplesamples/spring-boot-example
Use:
task -t .dev/Taskfile.yaml release-preflighttask -t .dev/Taskfile.yaml release-preflight-clean
release-preflight-clean removes the local docs virtual environment after the run. The default
preflight keeps .venv-docs/ to make repeated runs faster.
Release Automation¶
- Pushing a tag that matches
v*runs.github/workflows/release.yaml. - That workflow verifies the tag matches the Maven project release version, runs the quality verification profile, and only then creates or updates the GitHub Release.
- Maven Central publishing is intentionally not part of the tag-push workflow.
- Publishing to Maven Central runs only from
.github/workflows/publish-maven-central.yaml, triggered withworkflow_dispatch. - The manual publish workflow checks out the requested tag, verifies it matches the Maven project version, and deploys with the existing Maven
releaseprofile and signing configuration. - Local
.dev/bin/release.shno longer runs Mavendeploy; it first runs the release preflight and then prepares and pushes the Git commit and tag for the release.
Release Expectations¶
- Every release should have a changelog entry.
- Public API and compatibility-impacting changes must be described explicitly.
- Published artifacts should include source and javadoc jars where applicable.
- Release metadata must remain suitable for Maven Central publication.
Branching¶
mainis the default integration branch.release/*branches are reserved for stabilization and patch releases when needed.
After Release¶
- Verify the GitHub Release was created or updated from the tag push workflow.
- Verify published artifacts in Maven Central after the manual publish workflow completes.
- Verify generated site and documentation references if they changed.
- Announce breaking or compatibility-sensitive changes clearly in release notes.