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

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