Package versioning should use Semantic Versioning https://semver.org/. Exceptions (e.g. see the cycle build) should be well documented in the package and may require an RFC ticket.
Tagging a version has the following rules:
ticket branches can be tagged with
The develop branch can be tagged with
vX.Y.Z-rc.NIf your code is using ts_xml develop branch then the CSC release must be tagged here.
Main branch is reserved for main tags:
vX.Y.ZAny releases tagged from here must be compatible with the current released version of ts_xml.
Where X, Y and Z are major, minor and point/hotfix respectively.
Use Annotated tags on the main branch
The Annotation is a meaningful text description of the release
Tag alpha on ticket branches. This is for developing new features or bug fixes for deploying in environments.
git tag vX.Y.Z-alpha.N
git push origin vX.Y.Z-alpha.N
Note that there is no need to annotate alpha tags.
Tag beta on ticket branches. This is meant for new features or bug fixes that have finished development but are still not quite finished.
git tag vX.Y.Z-beta.N
git push origin vX.Y.Z-beta.N
Note that there is no need to annotate beta tags.
Tag release candidates on develop branch. This is for software that has new XML that has not been released or for bigger changes that require further testing. This branch is considered to be always ready to deploy which means passing unit tests.
git tag vX.Y.Z-rc.N --annotate -m "Add release message here."
git push origin vX.Y.Z-rc.N
Release candidate tags should be annotated.
Tag releases on main branch. This is for software that’s ready to be deployed on production.
git tag -a vX.Y.Z --annotate -m "Add release message here."
git push origin vX.Y.Z
Release tags should be annotated.