CI/CD
Pipelines
It can differ for each project where pipelines are run. Within Recognize we support the following 3 environments:
- Azure DevOps
- Bitrise
- GitHub
It is prohibited to use any other environment for a CI/CD pipeline.
We use the following mapping within our pipelines:
Branch | Environment |
---|---|
feature/\* | n/a or development |
develop | Test |
release/* | Acceptance |
master or main 1 | Production |
Bitrise
When Bitrise is used for mobile CI within a software project, it is required that the project adheres to the following set of rules, in order to prevent spending unnecessary build credits:
- Builds can not happen on every single commit, only in branches that are mapped to an environment (excluding development) within the Git Flow (see also the table above).
- Within the project settings of a Bitrise application, the following settings should be configured for rolling builds in order to cancel unnecessary builds:
- 'Enable rolling builds' should be checked
- 'Enable rolling builds > Pull Requests' should be checked
- 'Enable rolling builds > Pushes' should be checked
- 'Enable rolling builds > Running builds' should be checked
- Applications can not make use of the 'Elite' and 'Elite XL' build machines
Provisioning
The provisioning of cloud resources is done automatically and from a CI/CD pipeline. Within Recognize we use Terraform for this. During development is it allowed to manually provision resources locally, within a sandbox or development environment, but not within a test, acceptance or production environment.
Deployments
Deployment of software can be done in multiple ways; this can differ based on the chosen technology or (cloud-)architecture. However, all deployments to test, acceptance and production environments must originate from a CI/CD pipeline, it is prohibited to use manual deployments within a project.
-
This branch is sometimes referred to as "master", sometimes as "main". It doesn't matter which one you use as long as the functionality remains. ↩