PCMT follows Semantic Versioning. For each set of git commits which are pushed to the Continious Integration (CI) server, a CI Pipeline will build, test (WIP), and publish a set of assets which uniquely tie those assets back to the set of commits built using the build metadata.
If the semantic version is `0.1.0-snapshot`, and a set of commits is pushed with the most recent commit having a commit ID (short version with at least 8 hex digits) of `2fa658a5`then the assets will be tagged as: `0.1.0-snapshot-sha2fa658a5`
When those commits are merged into the master branch, the CI server will also tag and push the assets without the commit id in the build metadata.
On `master` branch, `0.1.0-snapshot-sha2fa658a5` is also tagged as `0.1.0-snapshot`.
Setting the semantic version
The semantic version is set in the code-base, in the file .env as the value under the key PCMT_VER. So to change the version from 0.1.0-snapshot to 0.1.0 our .env would have the following entry:
You have the ability to Merge to the master branch.
The master branch is code- and test-complete. That is, it's ready to be released.
No new commits or merges will be made to master outside of this process.
Special pre-release modifiers:
The pre-release modifier snapshot is a special modifier in that it's not locked to any specific commit, but rather floats and is used to denote "the latest work in progress".
The pre-release modifier alpha, beta, rc etc are tied to a specific commit, and are for internal testing purposes.
Checkout the master branch.
Change the PCMT_VER variable in .env to the semantic version you are releasing. Be sure to use or remove the appropriate pre-release modifier. e.g. if you're releasing a alpha of 1.0.0 then .env should contain PCMT_VER=1.0.0-alpha.
Commit this change and push it to the CI server. You should see a pipeline building this commit/release.
Once the Build and Deploy stages in the pipeline are done, you may view the release on the test instance.
On GitLab.com, tag this commit and create a GitLab release, link to relevant user-docs.