hamlet releases follow the release train model (Spotify Example, Agile Description) where releases are made at scheduled intervals. With this model, all commits to the master branch should be considered release candidates.
hamlet provides a range of repos and tools that work with or extend hamlet for different purposes. Out of these we only offer official releases for the following repositories
The engine release is built from a number of other sources which are listed as part of the engine repository
Engine Release Cycle
The engine release cycle is structured into three stages. The releases are structured this way to ensure that there is a balance of latest features with stability for production application deployments.
The unicycle release is our latest development code and is generally based on the default branch of code in the hamlet repositories. Builds of the unicycle release are created on each commit to the hamlet repositories.
The tram release is a rollup of the work completed between train releases. The tram release is intended for the testing of new features for the next train but with less risk of running into issues with actively developed work. The tram release process runs from the hamlet-engine-base repo each night and performs an in depth testing cycle across different aspects of hamlet.
The train release is the stable product release which is the recommended release of hamlet. The train is scheduled quarterly on the first of February, May, August, November.
Patch releases are bugfix releases for a train release. They are not scheduled and will be released as required. By their nature, trams and unicycle releases do not have patch releases associated with them. Bug fixes are simply included in the next release.
Since releases are schedule based, a feature or change to hamlet might not always be ready to go. To work within this process, changes which will impact existing deployments should be disabled by default or have a configuration option to control their behaviour.
hamlet follows semver 2.0.0 with alignment to our release schedules.
- Major - v1.x.x When the release includes a
BREAKING CHANGEper our commit convention, or (more rarely) when the hamlet team deem the release significant enough to warrant a major release increment.
- Minor - vx.1.x Each train release increments the minor version number
- Patch - vx.x.1 Urgent fixes for the most recent train release
- Release Candidate - vx.2.x-rc1 Each tram release is treated as a release candidate for the next train release
With this format the release candidate and minor versions will increment on a regular basis, the major release when a breaking change is included and patch releases as determined by the hamlet team.