The page that you are currently viewing is for an old version of Stroom (7.1). The documentation for the latest version of Stroom (7.6) can be found using the version drop-down at the top of the screen or by clicking here.
Releasing Stroom
Pre-requisites for a release
The follow need to be completed before a release is made.
Logging changes
Stroom and its related repositories all have a CHANGELOG.md
file for recording changes made between releases.
Before making a release you should ensure that all changes have been recorded in the CHANGELOG.
This is not done by directly editing the file but instead using the script ./log_change.sh
.
log_change creates change entry files in the directory ./unreleased_changes/
.
This prevents merge conflicts that would happen with multiple people editing the CHANGELOG file.
The following examples show you how to use the log_change script.
Commit and push all changes
Before releasing all local changes that you want in the release should be committed and pushed.
Commits that you want in a release should be merged down to a release branch, e.g. 7.0
or master
.
Once pushed and merged ensure that the branch passes the
CI build
.
Decide on the next version number
Stroom versioning follows Semantic Versioning .
Given a version number MAJOR.MINOR.PATCH:
- MAJOR is incremented when there are major or breaking changes.
- MINOR is incremented when functionality is added in a backwards compatible manner.
- PATCH is incremented when bugs are fixed.
Based on the changes since the last release establish if it is a major, minor or patch release to determine the next version number.
Performing a named release of Stroom
Once all the above pre-requisites have been met you can trigger the release by running this command:
This script will do the following:
- Adds the content of the unreleased change entry files (created by
log_change.sh
) to the CHANGELOG. - Prompts for (and suggests) the next version based on the previous release.
- Adds a new version heading to CHANGELOG.
- Adds/updates the version compare links in the CHANGELOG.
- Commits and pushes the change log changes.
- Creates an annotated git tag using the release version number and change entries.
The tagged git commit will trigger a CI build that includes additional release elements such as:
- Pushing the built docker images to DockerHub.
- Creating a release for the git tag in GitHub with all the release artefacts.
- Publishing any libraries to Sonatype and Maven Central.
Performing a named release of the docker stacks
Once the Stroom release build has finished and the artefacts are available on GitHub Releases and DockerHub you can create an associated release of the Stroom docker stacks.
In the following examples we will assume that you have just released Stroom v7.0.1
on branch 7.0
, and the previous release was v7.0.0
.
Checkout and pull the corresponding release branch in the stroom-resources repository.
Now edit the file bin/stack/container_versions.env
and edit the following line, setting it to the version of stroom you have just released:
STROOM_TAG="v7.0.0"
STROOM_TAG="v7.0.1"
If any of the other docker image versions need updating then do it at this point.
Now add/commit/push the change. Check the CI build is successful for the new Stroom image.
If the build is green then tag the stacks release as follows:
This script will build all the stack variants locally to ensure they will build successfully, though it does not test them. If the local build is successful it will then create an annotated git tag which will trigger a release CI build. The release CI build will create an archive for each stack variant and add them as a release artefacts.
SNAPSHOT releases
SNAPSHOT releases should not be released to Sonatype or Maven Central.
If a development version of a library needs to be shared between projects then you can either use the Gradle task publishToMavenLocal
to publish a SNAPSHOT
version to your local Maven repository and change your dependency version to SNAPSHOT
, or perform a named release along the lines of vx.y.z-alpha.n
.
Release Versioning conventions
Semantic versioning is used, and this should be adhered to, see SemVer . The following are examples of valid version names
SNAPSHOT
- Used only for local development, never to be published publicly.v3.3.0
- Initial release of v3.3, with an associated3.3
branch.v3.3.1
- A patch release to v3.3 on the3.3
branch.v3.4.0-alpha.1
- An alpha release of v3.4, either onmaster
or a3.4
branchv3.4.0-beta.1
- An beta release of v3.4, either onmaster
or a3.4
branch