CI/CD (Continuous Integration / Continuous Delivery)
Définition
Le CI/CD est une pratique de livraison logicielle qui automatise le pipeline de build, de test et de déploiement. Continuous Integration (CI) fusionne les modifications de code fréquemment et exécute des tests automatisés. Continuous Delivery/Deployment (CD) déploie automatiquement le code testé dans les environnements de staging ou de production.
Concepts clés
- CI (Continuous Integration) : Les développeurs fusionnent le code dans un repo partagé plusieurs fois par jour ; chaque fusion déclenche des builds et des tests automatisés
- CD (Continuous Delivery) : Le code qui passe CI est automatiquement préparé pour la publication en production
- CD (Continuous Deployment) : Le code qui passe CI est automatiquement déployé en production sans approbation humaine
- Pipeline : Série d’étapes (build → test → stage → deploy)
- Artifact : Binaire compilé, image de conteneur ou package produit par le pipeline
- Artifact Repository : Stockage pour les sorties de build (Nexus, Artifactory, GHCR)
Outils CI/CD courants
| Outil | Type | Notes |
|---|---|---|
| GitHub Actions | Cloud/On-prem | Workflows YAML, intégré avec GitHub |
| GitLab CI/CD | Cloud/On-prem | Intégré dans GitLab, YAML (.gitlab-ci.yml) |
| Jenkins | On-prem | Écosystème de plugins, pipelines Groovy |
| CircleCI | Cloud | Rapide, configuration YAML, natif Docker |
| Argo CD | GitOps | Déploiement Kubernetes déclaratif |
| Tekton | Kubernetes-native | CI/CD cloud-native sur K8s |
Meilleures pratiques CI/CD
- Feedback rapide : Garder le pipeline sous 10 minutes
- Artifacts immuables : Build une fois, promouvoir à travers les environnements
- Parité des environnements : Le staging correspond à la production
- Capacité de rollback : Avoir toujours un chemin de retour en arrière
- Scanning de sécurité : SAST, DAST, vérifications de dépendances dans le pipeline
Termes associés
- Git — système de contrôle de version utilisé avec CI/CD
- Docker: https://argoproj.github.io/cd/
- CNCF CI/CD landscape: https://www.cncf.io/landscape/