Skip to content

Release model

Luis Iñesta edited this page Nov 29, 2022 · 3 revisions

Version numbers

This project uses two versioning paths:

Module versioning

Each module (that is, each Maven project) has its own independent version number. They should be maintained in the corresponding pom.xml files as well as in the kukumo-bom/pom.xml file.

Modules with unreleased modifications should use the next version with the -alpha suffix, for example: 1.3.5-alpha. Once they are released, the suffix must be removed.

Bundle versioning

The Maven projects kukumo-parent and kukumo-bom are not pieces of software but management projects; they handle the aggregation of the different modules. Thus, they use a different version number, known as revision.

Independently of the kind of version number, they must follow the Semantic Versioning.

Stable releases

Stable versions of each module will be generated periodically, when a meaningful set of fixes and features have been integrated to the main branch. A good guideline would be the number of changes in the [Unreleased] section of the changelogs. Such releases are done manually.

Docker images

Stable Docker images have a regular version number that would be increased by one each iteration, using the identifier:

wakamiti/wakamiti:1.x

Each time a new version is tagged, it will be pushed automatically to the Docker Hub repository.

In addition, it would be pushed as well a copy of the image but with the identifier

wakamiti/wakamiti:latest

so that regular users can use the latest stable version without caring about the actual version number.

The version number should correspond to the {revision} value

Maven artifacts

Maven artifacts generated for each module would follow the Semantic Versioning nomenclature. They will be uploaded to Github as packages.

Tagging

Each time a stable release is produced, the main branch must be tagged with a label representing the revision number (for example, v1.4.0)

Alpha releases

Alpha releases (also known as night builds) are representations of the current status of the main branch. They may contain bugs and other issues that are not yet solved, so they are not recommended for stable usage of the tool, but rather exploring new features and experimental modifications. Alpha releases are generated automatically by the build Github action that is triggered each time a commit is pushed to the main branch.

Docker images

The automated build script would create a new Docker image and push it to Docker Hub. This image would always have the same identifier:

wakamiti/wakamiti:alpha

Thus, this image will be continuously replaced with the latest changes.

Maven artifacts

No Maven artifacts would be uploaded for alpha releases. The recommended way to get them is clone the repository and execute:

./mvnw install