CI Continuous integration

One repo or multiple repos

What is Continuous integration / Continuous deployement

Continuous Integration (CI) : Push changes on developement server quickly and automatically so new changes can be tested earlier

Continous Deployement (CD) : Push changes on production server quickly and automatically so new changes can benefits to users earlier

All the infos here https://www.thoughtworks.com/continuous-integration

The most important being :

The practice

  • Maintain a single source repository

  • Automate the build

  • Make your build self-testing

  • Every commit should build on an integration machine

  • Keep the build fast

  • Test in a clone of the production environment

  • Make it easy for anyone to get the latest executable version

  • Everyone can see what’s happening

  • Automate deployment

How to do it

  • Developers check out code into their private workspaces

  • When done, commit the changes to the repository

  • The CI server monitors the repository and checks out changes when they occur

  • The CI server builds the system and runs unit and integration tests

  • The CI server releases deployable artefacts for testing

  • The CI server assigns a build label to the version of the code it just built

  • The CI server informs the team of the successful build

  • If the build or tests fail, the CI server alerts the team

  • The team fixes the issue at the earliest opportunity

  • Continue to continually integrate and test throughout the project

Team responsibilities

  • Check in frequently

  • Don’t check in broken code

  • Don’t check in untested code

  • Don’t check in when the build is broken

  • Don’t go home after checking in until the system builds

Which CI server to choose

A comparison of continuous integration tools

https://www.code-maze.com/top-8-continuous-integration-tools/