Québec, Canada

403-1381 1re Avenue

+1 581.849.27.96

bdgouthiere@gmail.com

CI/CD : automatiser tout ce qui se passe entre le commit et la production

Ou : Comment remplacer « ça marchait sur ma machine » par « ça marche partout, automatiquement »


Le vendredi à 17h. Un développeur fait un [git](/glossaire/developpement-web/git/) push et rentre chez lui. Lundi matin, le site est down. Le déploiement a échoué silencieusement, le code ne compile pas sur le serveur, et personne n’a remarqué pendant le week-end.

Le CI/CDContinuous Integration / Continuous Deployment — existe pour que ce scénario ne se produise jamais. C’est l’automatisation de tout ce qui se passe entre le moment où un développeur pousse du code et le moment où ce code est en production : compilation, tests, analyse de qualité, déploiement.

CI et CD : deux concepts, un pipeline

L’intégration continue (CI)

La CI (Continuous Integration) est la pratique de fusionner le code de tous les développeurs dans une branche commune plusieurs fois par jour, avec à chaque merge une vérification automatique :

  1. Build — le code compile-t-il ?
  2. Tests — les tests unitaires et d’intégration passent-ils ?
  3. Linting — le code respecte-t-il les conventions de style ?
  4. Sécurité — y a-t-il des dépendances vulnérables ?

Si une étape échoue, le pipeline s’arrête et le développeur est notifié. Le code ne peut pas être fusionné tant que le pipeline est rouge.

Le déploiement continu (CD)

Le CD prolonge la CI jusqu’à la production :

  • Continuous Delivery — le code est prêt à être déployé à tout moment, mais un humain appuie sur le bouton.
  • Continuous Deployment — le code est déployé automatiquement en production dès que le pipeline CI est vert. Pas de bouton, pas d’intervention humaine.

Les outils

OutilTypeParticularité
GitHub ActionsCloud, intégré à GitHubGratuit pour les projets open source
GitLab CICloud ou self-hostedIntégré à GitLab, très complet
JenkinsSelf-hostedVétéran, très configurable, complexe
CircleCICloudRapide, bonne UX

Le dialogue du pipeline cassé

DevOps Dave : Le pipeline CI met 45 minutes. Les développeurs le contournent en poussant directement sur main.

Security Sarah : Donc vous avez un pipeline CI que personne n’utilise. C’est pire que de ne pas en avoir — ça donne une fausse impression de sécurité.

DevOps Dave : Mais les tests sont importants !

Security Sarah : Alors optimise le pipeline. Parallélise les tests, cache les dépendances, supprime les tests flaky. Un pipeline CI doit passer en 5-10 minutes max. Au-delà, les développeurs le contournent. C’est la nature humaine.

Tableau récapitulatif

ConceptEn une phrase
CIIntégration continue — vérifier automatiquement chaque changement de code.
CDDéploiement continu — livrer automatiquement le code vérifié en production.
PipelineSéquence d’étapes automatisées (build → test → deploy).
Tests automatisésTests exécutés automatiquement à chaque commit — le filet de sécurité.

Le mot de la fin

Le CI/CD est la différence entre « déployer c’est stressant » et « déployer c’est un non-événement ». Les équipes matures déploient en production des dizaines de fois par jour — parce que chaque déploiement est petit, testé, et réversible. Les équipes sans CI/CD déploient une fois par mois, le vendredi, en croisant les doigts.