Continous integration setup

One repo or multiple repos

  • One repo better https://nrwl.io/nx/why-a-workspace

  • One or multiple in the context of micro-services https://medium.com/@somakdas/code-repository-for-micro-services-mono-repository-or-multiple-repositories-d9ad6a8f6e0e

  • Mono repository for micro service http://blog.shippable.com/our-journey-to-microservices-and-a-mono-repository

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/

  • Amazon AWS tutorial for contiuous integration https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials.html
Written on January 24, 2018