Skip to content
This repository was archived by the owner on Sep 27, 2020. It is now read-only.

Latest commit

 

History

History
69 lines (49 loc) · 3.52 KB

File metadata and controls

69 lines (49 loc) · 3.52 KB

Continuous Integration and Delivery

Content

Triggering a Delivery using the CI

The easiest way to deliver a new build to production or development is to trigger the corresponding CircleCI workflows (api_triggered_development_delivery and api_triggered_production_delivery depending on the production_delivery parameter):

  • Get a CircleCI Personal API Token.
  • Trigger a build using the tool trigger-pipeline.sh. If no branch is specified, main is used as default.
  • For more information on how to use it, execute it without parameters to see usage information.

Workflows

See the table below for a detailed overview of all existing workflows:

Workflow Trigger Checks Builds Bump version Delivery
commit Every PR-commit ✔️ ✔️ Development (main only)
bi_weekly_production_delivery Bi weekly cron ✔️ ✔️ ✔️ Production
api_triggered_development_delivery Manually ✔️ ✔️ Development
api_triggered_production_delivery Manually ✔️ ✔️ ✔️ Production

Steps executed if Checks is checked ✔️:

  • Linting
  • Flow type checking
  • Unit testing with jest
  • Building the app

Steps executed if Bump version is checked ✔️:

  • Jira releases
  • Move release notes
  • Bump version: Bump the version(s) and create a tag and release on github

Versions built if Builds is checked ✔️:

  • Production integreat build
  • Production malte build
  • Development integreat-test-cms build

Determining the Next Version

The next version of the app must be determined programmatically. The tool next-version can be used. More information on the version naming schema used can be found here.

Services

deliverino (GitHub)

deliverino is a GitHub App and can be accessed and installed here. This bot bumps the version of the app when a new release is delivered. A private key in PEM format grants access to the bot. If the deliverino is installed for a specific repository then it has access to create commits there.

deliverino has the role of an Administrator. This is important when setting up "Protected branches" in GitHub. You have to disable "Include Administrators", else deliverino is not allowed to directly commit to the protected branch.

deliverino (Slack)

The Slack bot deliverino is responsible to notify Slack channels about releases. It posts a message for iOS and Android individually as soon as the delivery step has finished.

Hints and Quirks

CPU count aka. $TOTAL_CPUS

There is no obvious way for an application to know how many cores it has available in a CircleCI docker container. The usual ways of getting the CPU count reports the CPU count of the host. This causes out-of-memory issues as the host has a lot of cores. Therefore, all tools must set the worker limit to $TOTAL_CPUS. Set this variable in the .circleci/config.yml.