GitHub Actions creates and uploads release artifacts on tags, via the
.github/workflows/release.yaml
workflow.
When preparing a release, a release-specific branch should be created from the master
branch.
The release branches are named in the format release/A.B
, where A
is the major release number
and B
is the minor release number. These branches must be stable, as they hold the tagged releases of Zentity.
Tags must strictly follow SemVer v2.0.0.
The only pre-release identifier is rcX
where X is a number.
Pre-release tags are in the format A.B.C-rcX
, ex: 1.0.0-rc1
.
Stable release tags are in the format A.B.C
, ex: 1.0.0
.
The process to release a Zentity version is as follows:
- Create the release branch
release/A.B
and tagrelease/A.B.0-rc1
. - Push the tag, which will trigger the release workflow.
- If a critical problem is found, fix it and release
rc2
. - When there is confidence that a release is ready, tag and push
A.B.0
.
All together now:
# Get onto the lastest master
git fetch --all
git checkout origin/master
# Create and push the release branch
git checkout -b release/A.B
git push -u origin release/A.B
# Tag and push the release
git tag -a A.B.0-rc1 -m "First release candidate for A.B line"
git push origin A.B.0-rc1
After the initial release there may be a need for a patch release A.B.1
, A.B.2
and so on.
These typically include only fixes to critical issues, but there might be exceptions where features are
backported from master. For instance, if a master
has dropped support for Elasticsearch 7, but a feature is deemed
useful to enough users of es7, the feature can be backported to a release branch that still supports es7 and released
as a patch.