Skip to content

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:

  1. 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.

  2. 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.