The bulk of work of releasing a new version is done by the ./release.sh
script. This script takes care of bumping the versions, creating a tag and deploying to Maven Central.
USAGE:
release.sh [FLAGS] <release-version> <next-version>
FLAGS:
-h, --help Prints help information
-v, --version Prints version information
--no-color Uses plain text output
ARGS:
<release-version> The release version (as semver)
<next-snapshot> The next snapshot version (as semver)
<release-version>
and<next-version>
must be semantic versions followingmajor.minor.micro
.<next-version>
must be greater than<release-version>
- there must be no uncommitted changes
- there must be no tag
v<next-version>
- there should be some entries in the Unreleased section of the changelog.
- Bump the version to
<release-version>.Final
- Update the changelog headings and internal links (there should already be entries in the Unreleased section)
- Create a tag for
v<release-version>
- Commit and push to upstream (which will trigger the release workflow at GitHub):
- Deploy to Maven Central
- Create a GitHub release with the relevant entries from the changelog
- Announce the release in the discussions
- Bump the version to
<next-version>-SNAPSHOT
- Commit and push to upstream