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/rml/proc/mappingweaver-java). - You are on
development, up to date withorigin/development, with a clean working tree. - The tests pass:
mvn verify. - The conformance run meets
conformance/expected-results.csv: start the manualConformancejob in the latestdevelopmentpipeline, or runconformance/run.sh(HANDBOOK: Conformance). A case that passes now is removed from the file, with its line in the changelog. ## Unreleasedstates the conformance change since the previous release:git diff v<previous> -- conformance/expected-results.csvlists it, a removed line being a case that passes now and an added line one that no longer does.## UnreleasedinCHANGELOG.mdlists everything since the last release.- Pick the version with Semantic Versioning.
pom.xmlholds the next patch as-SNAPSHOT(<version>-SNAPSHOT): release that patch, or a higher minor or major version when the changelog has new features or breaking changes.
- Run
./bump-version.sh <version>(formatX.Y.Z) and answeryto both questions. The script- sets the version in
pom.xmland the jar name 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/rml/proc/mappingweaver-java/-/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/MappingWeaver/ (this can take up to an hour). The pipeline'sPackagejob also keeps the runnable jar as a job artifact.
- GitLab mirrors the branches and tags to GitHub (https://github.com/RMLio/MappingWeaver-java); check that the tag is there.
- 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.