ci/cd
CI/CD (Intégration Continue/Livraison Continue ou Déploiement Continu) est un ensemble de pratiques automatisant le processus de publication logicielle.
CI/CD, pour Intégration Continue et Livraison Continue (ou Déploiement Continu), est un ensemble de pratiques de développement logiciel visant à automatiser et améliorer l'efficacité du processus de publication logicielle. L'Intégration Continue (IC) implique que les développeurs fusionnent fréquemment leurs changements de code dans un dépôt partagé, généralement plusieurs fois par jour. Chaque fusion est ensuite vérifiée par un build automatisé et des tests automatisés. Cette pratique aide à détecter rapidement les erreurs d'intégration, les empêchant de s'accumuler et de devenir plus difficiles à corriger. La Livraison Continue (LC) est l'extension naturelle de l'IC. Elle garantit que les changements de code qui réussissent les tests automatisés sont automatiquement publiés dans un dépôt ou un environnement de staging, les rendant prêts à être déployés en production à tout moment. Le Déploiement Continu (DC) va plus loin, déployant automatiquement chaque changement validé directement en production. L'objectif principal de la CI/CD est de construire, tester et publier des logiciels plus rapidement et de manière plus fiable, réduisant le risque associé aux versions importantes et peu fréquentes et permettant aux équipes de répondre plus rapidement aux demandes du marché ou aux retours des utilisateurs. Elle favorise la collaboration, réduit le travail manuel et améliore la qualité et la stabilité globales du logiciel.
graph LR
Center["ci/cd"]:::main
Rel_automation["automation"]:::related -.-> Center
click Rel_automation "/terms/automation"
Rel_cicd_pipeline["cicd-pipeline"]:::related -.-> Center
click Rel_cicd_pipeline "/terms/cicd-pipeline"
Rel_continuous_delivery["continuous-delivery"]:::related -.-> Center
click Rel_continuous_delivery "/terms/continuous-delivery"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Test de connaissances
🧒 Explique-moi comme si j'avais 5 ans
La CI/CD, c'est comme une façon super rapide et automatique de mettre à jour vos applications préférées. Au lieu d'attendre longtemps pour de grosses mises à jour, les petits changements sont vérifiés et ajoutés constamment, pour que vous ayez toujours les dernières améliorations.
🤓 Expert Deep Dive
La CI/CD représente un changement de paradigme vers le développement logiciel agile et lean, mettant l'accent sur des boucles de rétroaction rapides et une livraison itérative. D'un point de vue système, elle transforme le cycle de vie du logiciel en un processus hautement automatisé, observable et résilient. L'Intégration Continue se concentre sur le maintien d'une base de code saine grâce à des fusions fréquentes et une validation automatisée, atténuant les risques associés aux branches de fonctionnalités de longue durée et aux phases d'intégration complexes. La Livraison Continue assure la déployabilité en automatisant le pipeline de publication jusqu'au point de déploiement en production, permettant des décisions de publication pilotées par les besoins métier. Le Déploiement Continu automatise l'étape finale, permettant une livraison de valeur quasi instantanée. Les considérations architecturales clés incluent des stratégies robustes de contrôle de version, des pyramides d'automatisation des tests efficaces, la gestion des artefacts et l'automatisation de l'infrastructure. Les compromis impliquent le coût de mise en place initial, la nécessité d'une culture de test mature et le potentiel d'une complexité opérationnelle accrue si elle n'est pas gérée correctement. Des vulnérabilités peuvent survenir en cas de couverture de tests inadéquate, de configurations de pipeline non sécurisées ou de surveillance insuffisante.