CI / CD workflow¶
Continuous integration¶
Developers practicing continuous integration merge their changes back to the main branch as often as possible. The developer's changes are validated by creating a build and running automated tests against the build. By doing so, you avoid the integration hell that usually happens when people wait for release day to merge their changes into the release branch.
Continuous integration puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch. 1
We are currently using Gitlab as our continuous integration tool. Every commit must be linted and tested before being merged to any of our main branches.
Continuous delivery¶
Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.
In theory, with continuous delivery, you can decide to release daily, weekly, fortnightly, or whatever suits your business requirements. However, if you truly want to get the benefits of continuous delivery, you should deploy to production as early as possible to make sure that you release small batches that are easy to troubleshoot in case of a problem. 1
We also rely on Gitlab to be able to perform one-click deploys and manual deploys or using other tools are forbidden.
How to get started¶
Our CI workflow is complete and can be used to run linters, unit and integration tests (even using a temp database) and package our apps. In terms of CD, we currently support docker-compose based single server deployments.
In order to understand how to configure your repository to be ops compliant please checkout Atix Ops where you will be able to find a detailed explanation, a quick start guide and a set of example to start using this workflows as soon as possible.