Releasing¶
A version on Maven Central can never be changed or removed, so every release goes through a release candidate first.
The Publish workflow builds and deploys the framework when a GitHub release is published; the version comes from
the tag (2026.11.0 or 2026.11.0-RC1, as with the existing tags; a leading v would be stripped). framework/pom.xml is the only place that
holds the framework version.
The version number¶
The only version in the code is <version> in framework/pom.xml. It always holds a -SNAPSHOT of the next
release (now 2026.11.0-SNAPSHOT for the release 2026.11.0).
- Before a release: change nothing. Do not remove
-SNAPSHOTand do not commit the release version.Publishtakes the version from the tag and sets it in the build only; CI'srelease-dry-runjob tests the SNAPSHOT without the suffix. Choose the tag so that it equals the SNAPSHOT without-SNAPSHOT(or deliberately choose a different version, then the next step sets it). - After the final release: set
<version>to the next-SNAPSHOT(e.g.2026.11.0released, then2026.12.0-SNAPSHOT) and commit it tomain. This is the last step of the checklist. Do not bump after an RC: the RC belongs to the same SNAPSHOT. - Never change: the version ranges in the examples (
levenshtein.version=[2000.0.0,)inexample-maven/pom.xml,levenshteinVersion=latest.releaseinexample-gradle/build.gradle), and the0-SNAPSHOTof the rootpom.xmlandexample-maven/pom.xml. They always take the newest release from Maven Central. - Only on a new major line (a breaking change like 2000.0.0): raise the lower bound
2000.0.0of the example ranges inexample-maven/pom.xmlanddocs/ares-setup.md, and write the breaking changes into Migration.
Checklist¶
-
mainis green: CI passes, including therelease-dry-runjob (it builds sources, javadoc and the version change likepublish.yml, without GPG and without the upload). - Docs match the code: Migration lists the new version and its breaking changes; the README and the examples show current usage.
- Check that the secrets
GPG_PRIVATE_KEY,GPG_PASSPHRASE,OSSRH_USERandOSSRH_TOKENare set and still valid. - Create a pre-release on GitHub with the tag
<version>-RC1onmain. This startsPublish. - Wait for
Publishto succeed and for the artifact to appear on Maven Central (this can take some minutes). - Run the
Smoke testworkflow with the version<version>-RC1: it runs both example templates (Gradle and Maven) against Maven Central. - If a problem shows up: fix it on
mainand publish-RC2(go to step 4). Never re-use a tag. - Create the release on GitHub with the tag
<version>on the commit that passed the smoke test. - Wait for
Publishand runSmoke testonce more without an input (it takes the newest version on Maven Central). - Set
<version>inframework/pom.xmlto the next-SNAPSHOTand commit it tomain. This is the only commit that changes the version.
Documentation site¶
The docs site (docs/ and the Javadoc of framework/src/main) is rebuilt and deployed to GitHub Pages by the
Docs workflow on every push to main that touches them; nothing to do for a release. It shows the state
of main (or of the branch of the last manual run: Actions > Docs > Run workflow deploys any branch, the next
push to main restores it), so merge doc changes for a new version together with the code. Preview it locally with
pip install zensical && zensical serve.