Step-by-step instructions for publishing a release. HANDBOOK.md (Release process) explains how the tooling works.
- Everything changed since the previous release is reviewed: the code for correctness, and the documentation and changelog for accuracy and brevity.
- bash (Git Bash on Windows), Maven, Java 21, and
changefrog(npm install -g changefrog), which writes the version section ofCHANGELOG.md. - Push access to
origin(https://gitlab.ilabt.imec.be/KNoWS/fno/proc/function-component). - You are on
development, up to date withorigin/development, with a clean working tree. - The tests pass:
mvn verify. ## UnreleasedinCHANGELOG.mdlists everything since the last release.- Pick the version
X.Y.Zwith Semantic Versioning.pom.xmlholds the next version as<version>-SNAPSHOT: release that version, or a higher minor or major version when the changelog has new features or breaking changes.
- Run
./bump-version.sh <version>and answeryto both questions. The script- sets the version in
pom.xmland the version inREADME.md; - turns
## Unreleasedinto the version section ofCHANGELOG.md; - commits "Update version to ", pushes
development, and creates and pushes the tagv<version>; - moves
pom.xmlto the next patch-SNAPSHOT, and commits and pushes "Prepare for next development cycle".
- sets the version in
- Move
mainto the release:git push origin v<version>^{commit}:main.mainalways points at the latest release; the push succeeds only as a fast-forward. - The tag pipeline (https://gitlab.ilabt.imec.be/KNoWS/fno/proc/function-component/-/pipelines) builds the release with the
releaseMaven profile, signs it and deploys it to Maven Central. The new version then appears at https://repo1.maven.org/maven2/be/ugent/idlab/knows/function-agent-java/ (this can take up to an hour).
- GitLab mirrors the branches and tags to GitHub (https://github.com/FnOio/function-agent-java); check that the tag is there.
- Update
function-agent.versionin MappingWeaver-java'spom.xmland the function-agent-java version in rmlmapper-java'spom.xml.
- The script stops at the first failing command. When it stops before pushing, fix the cause, discard its changes (
git reset --hard origin/development) and run it again. When it stops after pushingdevelopment, finish by hand: create the tagv<version>on the version commit if it is missing, push it (git push origin v<version>), then set the next-SNAPSHOT(mvn versions:set -DnewVersion=<next>-SNAPSHOT -DgenerateBackupPoms=false), commit and push. - Once the tag is pushed, keep it: fix the cause and retry the failed pipeline job. When the released code itself is broken, release the next patch version.