Continuous Integration (CI)

L'Intégration Continue (CI) est une pratique de développement qui permet aux contributeurs à un projet de fusionner leurs travaux et d'assurer de façon automatique l'état fonctionnel de repertoire du projet. Il a été évoqué la première fois par Grady Booch l'un des fondateurs des methodes qui ont évolué pour donner le langage de modélisation UML.

Pour comprendre le concept, prenons un exemple de comment on développait des applications avant l'intégration continue (CI). Si vous êtes 20 développeurs à collaborer sur un projet hébergé sur GitHub, chacun copie le projet sur sa machine en local (cloner le projet) et modifie le code source. Lorsque les 20 développeurs auront fini de contribuer, il faut fusionner les contributions dans le répertoire central. C'est là que commencait les problèmes. Lors de la fusion qui prendra beaucoup de temps parcequ'il faut réconcilier les 20 versions des 20 développeurs. Des conflits peuvent intervenir à tout moment. Des fois, lorsque vous aurez fini la fusion, le résultat final est souvent dans un état où vous ne pouvez pas déployer parce que beaucoup de choses sont cassées. Après ces opérations, il faut maintenant refaire le tour et redresser le code avant qu'il devienne opérationnel.

Dans le but de contrer ces difficultés, qui peuvent retarder la livraison des fonctionnalités aux utilisateurs, d'éminents penseurs du domaine on pensé à l'intégration continue (CI). En bref, l'idée est de s'assurer à chaque fois que vous faites un changement que le changement peut passer en production. Le changement peut soit intégrer l'existant ou casser l'existant. Quand ça casse l'existant, il faut réparer le code jusqu'à ce que l'intégration soit correcte. C'est la base de l'intégration continue.

Une question fondamentale que vous vous poserez peut être: Comment savoir si une contribution casse l'existant ? La réponse est simple, il faut un outil qui vous le dis de façon automatisée. Concourse CI est l'un de ces outils que nous allons étudier dans ce livre.

Avec l'intégration continue (CI), quand vous faites une modification, l'outil prend le code source, le compile, le teste, fait du linting, scanne les paquets résultants pour identifier les vulnérabilités, construit une image docker du projet et vous laisse voir les opérations à appliquer pour déployer en dev ou prod. Si jamais une étape échoue, l'intégration ne passe pas. Il faut alors appliquer des correctifs pour réparer le code jusqu'à ce que tout soit au vert.

Dans ce livre, nous construirons des chaines pour nous dire si oui ou non, l'intégration est réussie. Nous mettrons en place des éléments pour vous notifier des irrégularités et des succès. À la fin, vous serez en capacité, enfin nous l'espérons de contruire en toute indépendence un système CI.

Pipeline de ce livre