Skip to content

Release process and versioning

Andrea Di Lisio edited this page Dec 15, 2022 · 6 revisions

This page is meant to briefly summarize our release process as well as our versioning conventions and mechanism.

Release process

Our artifacts are published into Nexus Sonatype OSS repository. Both final and unstable releases are managed via Github Workflow included in this repository.

Unstable releases

Every push event on a branch that is different from the default one (main) leads to an unstable release onto Nexus Sonatype snapshot repository. External developers can integrate against snapshot repositories by declaring the snapshot repository as defined in our README.

Final releases

Stable releases are instead created on push event on the default branch, and published to the main Sonatype repository and streamed to Maven Central.

Skipping releases

There are times (not so often) where we want to merge into the main branch without creating a new library release. This usually happens when multiple PRs are raised by Dependabot and we want to merge those in one release only. In those circumstances, we can leverage Github [skip ci] command on squash commits at PR merge time. Read more.

Versioning

We adhere to Semantic Versioning conventions while versioning our library.

As opposed to the standard tagging/versioning system used for internal services in TrueLayer, on this repository we adopted a different approach based on the project version declared in the library gradle.properties file. The value in there is considered as the actual value for final versions of the library and as base version for unstable releases.

Final releases

For example if a value of version=0.4.12 would lead to a final release with the following identifier com.truelayer:truelayer-java:0.4.12.

Unstable releases

The same version, when present on a development branch (e.g. one called jasdk-48) would lead to the following snapshot release com.truelayer:truelayer-java:0.4.12-jsdk-48-SNAPSHOT.