Tibica Developer Versioning Guide
Since Tibica versions are managed by A1 Apps Infrastructure lambda functions, there is an algorithm if you want your version to be eligible for deployment through installer.
The lambda reacts to the following events:
-
New commit is pushed to any branch of the repository.
When a new commit is pushed to any branch of the remote repository, the lambda function creates an artifact in the S3 bucket reflecting the repository state after the commit.
-
New tag is created on the repository.
When a new tag is created on the repository, the lambda function checks if the tag matches our versioning pattern. If it does, the lambda matches the tag with an existing artifact in the S3 bucket and publishes this version to the corresponding environment installer.
Publishing
The general tag regexp, according to the Semantic Versioning (SemVer) specification, is as follows:
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-?((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
dev
To publish your version to the dev environment, the tag should contain dev
in the 4th group of the regexp. Examples include: 1.0.0-dev
, 1.0.0dev
, 1.0.0-dev1
.
stage
To publish your version to the stage environment, the tag should have rc
(release candidate) in the 4th group of the regexp. Examples include: 1.0.0-rc
, 1.0.0rc
, 1.0.0-rc1
.
prod
To publish your version to the production environment, the 4th group of the regexp in the tag should be empty. Examples include: 1.0.0
, 1.0.1
, 1.0.2
.
Additional Tag Patterns
development versions
If you want your version to be available for on-demand deployment but hidden for usual customers, you can use the dv
postfix preceded by the =
character at the end of the usual dev, stage or prod tag. E.g., 1.0.0-dev=dv
, 1.0.0-rc=dv
, 1.0.0=dv
.
environment + customer
If you want your version to be available to a specific customer and deployed immediately, add the {environment_id}#{customer_id}
postfix to the tag preceded by the =
character. E.g., 1.0.0-dev=pool_dev#mycustomer1
, 1.0.0-rc=dev#mycustomer2
, 1.0.0=pool_stage#mycustomer3
.
mandatory
If you need your version to be mandatory, i.e., queued for deployment even when there are later versions available, add the mandatory
postfix to the tag preceded by the =
character. E.g., 1.0.0-dev=mandatory
, 1.0.0-rc=mandatory
, 1.0.0=mandatory
.
critical
If you need your version to be deployed immediately, add the critical
postfix to the tag preceded by the =
character. E.g., 1.0.0-dev=critical
, 1.0.0-rc=critical
, 1.0.0=critical
. Note: this functionality is still under development.
Note: It’s important to remember that for your version to be published, the commit linked to the tag should be among the HEAD commits that were pushed to your remote repository.
Additional tag postfixes can be combined. E.g., 1.0.0-dev=pool_dev#mycustomer1#mandatory
, 1.0.0-rc=dev#mycustomer2#critical
, 1.0.0=pool_stage#mycustomer3#dv
.