CI/CD

Nov 15, 2025

Bien distinguer la phase CI et la phase CD

CI (Continuous Integration) : Consiste a permettre a des développeurs qui travaillent sur un même projet / une même base de code d’intégrer de manière continue leurs avancées à cette base commune. Cela permet par ailleurs d’éviter le plus possible d’avoir a gérer des conflits de code, qui surviennent quand des modifications sont faites sur des lignes de code en commun. On automatise cela et on teste automatiquement.

CD (Continuous Deployment) : Consiste à mettre à jour le site ou l’application de manière la plus fluide possible et en continue. Cela passe souvent par une image de la version qui est construite, et sera versionnée sur un répo d’images. Ces images peuvent ensuite être récupérées par le serveur, reconstruire les conteneurs et les mettre en ligne. Il faudra donc un process pour créer les images (un dockerfile / docker-compose.yml par exemple) et un process qui permet au server de récuperer l’image en ligne.

Pipelines

Tout cela se fait via des pipelines. Les pipelines sont des “lignes d’exécution” qui sont lancées automatiquement, selon les conditions que l’on définit. Par exemple :

  • CI

    • Quand je merge ma branche sur la branche #main (le déclenchement de la pipeline se fait dès que l’on déploie sur la branche main)

    • Une machine va prendre la tâche

    • Elle récupère le code

    • Installe les dépendances

    • Teste le code si on le souhaite

  • CD

    • On peut définir des conditions

      • Si la phase CI échoue (par exemple si les tests ne sont pas validés)

        • Un message d’erreur s'affiche

      • Si la phase CI est un succès

        • Un nouveau pipeline démarre

          • On crée une image (docker, …) de la version validée

          • La version est versionnée sur un répo d’images

          • La pipeline indique au serveur de production qu’il y a une nouvelle image à récupérer

          • Le serveur télécharge l’image

          • Le serveur reconstruit le projet et la version est en ligne


Conclusion

L’idée globale de faire du CI est :

  • Limiter les risques que le code écrit ne casse en production

  • Eviter les conflits de code

  • Fluidifier le travail pour éviter des problèmes avec des tâches manuelles répétitives

Pour le CD :

  • Avoir une plateforme régulièrement mise à jour

  • Automatiser la phase complexe de la mise en production et enlever cette charge aux développeurs

  • Fiabiliser les déploiements (ce n’est plus un humain, mais des pipelines qui tournent régulièrement et qui font la même chose tout le temps)

  • Fluidifier le travail et automatiser des tâches manuelles répétitives

MaltGithub