- 1. Le pipeline CI/CD en bref
- 2. Fonctionnement du CI/CD : un jour dans la vie d’un pipeline
- 3. Étapes d’un pipeline CI/CD
- 4. Types de pipelines CI/CD
- 5. CI/CD dans le cloud
- 6. Pipelines CI/CD: les bonnes pratiques
- 7. Pipelines CI/CD: KPI
- 8. Outils CI/CD
- 9. Sécurité CI/CD
- 10. Regard prospectif sur les nouvelles tendances CI/CD
- 11. Pipelines CI/CD : les questions fréquentes
- Le pipeline CI/CD en bref
- Fonctionnement du CI/CD : un jour dans la vie d’un pipeline
- Étapes d’un pipeline CI/CD
- Types de pipelines CI/CD
- CI/CD dans le cloud
- Pipelines CI/CD: les bonnes pratiques
- Pipelines CI/CD: KPI
- Outils CI/CD
- Sécurité CI/CD
- Regard prospectif sur les nouvelles tendances CI/CD
- Pipelines CI/CD : les questions fréquentes
Qu’est-ce qu’un pipeline CI/CD ?
- Le pipeline CI/CD en bref
- Fonctionnement du CI/CD : un jour dans la vie d’un pipeline
- Étapes d’un pipeline CI/CD
- Types de pipelines CI/CD
- CI/CD dans le cloud
- Pipelines CI/CD: les bonnes pratiques
- Pipelines CI/CD: KPI
- Outils CI/CD
- Sécurité CI/CD
- Regard prospectif sur les nouvelles tendances CI/CD
- Pipelines CI/CD : les questions fréquentes
Un pipeline d’intégration et de livraison/déploiement continus (CI/CD) est formé d’une série d’étapes que traverse un logiciel pendant son cycle de développement, depuis la création du code jusqu’à son déploiement. Clé de voûte des DevOps, le processus CI/CD rationalise le développement des applications par l’automatisation des tâches répétitives, laquelle facilite une détection précoce des bugs, réduit les erreurs manuelles et accélère la livraison des logiciels.
Le pipeline CI/CD en bref
Le processus CI/CD réunit une série de processus automatiques qui vont du développement du code jusqu’à son déploiement en production. Cette structuration des processus facilite le déploiement fréquent de modifications du code en production. Il forme le socle des DevOps, une pratique du développement logiciel qui met l’accent sur la collaboration entre les équipes de développement (Dev) et les équipes opérationnelles (Ops), dans le but de raccourcir le cycle de développement sans nuire à la qualité logicielle.
Traduction pratique des principes de base du DevOps, le pipeline CI/CD établit le lien entre les équipes de développement, de test et des opérations. Dans cet environnement collaboratif, le processus CI/CD favorise une culture de partage des responsabilités pour la qualité des produits et le respect des calendriers de livraison.
Intégration continue (CI)
L’intégration continue (CI) est une pratique du développement logiciel dans laquelle les développeurs fusionnent régulièrement les modifications de code dans un dépôt central. Après chaque fusion, des processus de test et de développement automatisés s’exécutent pour intégrer le nouveau code au codebase existant, sans introduire d’erreur. Ce faisant, la CI minimise les difficultés habituelles de fusion des modifications à la fin d’un cycle de développement.
Livraison et déploiement continus (CD)
La livraison continue et le déploiement continu, tous deux abrégés CD, concernent les étapes qui suivent la CI. La livraison continue automatise le processus de versioning, en maintenant un état où toutes les versions du logiciel peuvent être déployées à tout moment dans un environnement de production. Elle maintient donc le logiciel dans un état de déploiement, et ce malgré les modifications permanentes dont il fait l’objet. De son côté, le déploiement continu va plus loin : chaque modification qui réussit les tests automatisés est automatiquement déployée en production, raccourcissant les délais d’autant.
La livraison continue et le déploiement continu prévoient tout deux le déploiement automatique de l’application dans divers environnements, par exemple en préproduction et en production, à l’aide de configurations d’infrastructure prédéfinies. Le pipeline CD incorpore des tests supplémentaires, notamment en matière d’intégration, de performance et d’analyse de sécurité, garantissant ainsi la qualité et la fiabilité de l’application.
Livraison continue vs déploiement continu
La grande différence entre la livraison continue et le déploiement continu porte sur l’étape finale d’intégration des modifications à l’environnement de production. Dans la livraison continue, l’étape finale du déploiement est un processus manuel, sorte de filet de sécurité qui permet de repérer les problèmes potentiels non détectés par les tests automatisés. Par contraste, le déploiement continu automatise le pipeline tout entier, y compris le déploiement final en production. Des mécanismes rigoureux de test et de suivi doivent donc être en place pour identifier et corriger les problèmes.
En résumé, le CI/CD peut faire référence à l’une ou l’autre de ces deux approches.
- Intégration continue et livraison continue (CI/CD)
- Intégration continue et déploiement continu (CI/CD)
Les entreprises qui mettent en place un pipeline CI/CD peuvent accélérer le time-to-market, établir des boucles de feedback continues et renforcer la qualité de leurs logiciels. Le processus CI/CD donne les moyens aux équipes développement (Dev), opérationnelles (Ops) et sécurité (Sec) de collaborer pour fournir des applications sécurisées, stables et ultra performantes.
Fonctionnement du CI/CD : un jour dans la vie d’un pipeline
La journée d’un pipeline CI/CD débute par la première tasse de café d’un développeur. Une fois installé, ce dernier extrait la dernière version du code du système de contrôle de version Git. Disposant des dernières modifications, il se plonge dans sa mission du jour : créer de nouvelles fonctions et corriger les bugs.
Une fois sa tâche terminée, le développeur effectue un commit de ses modifications dans un dépôt partagé. Cette action déclenche le démarrage du pipeline CI/CD. Le pipeline, configuré avec webhooks, détecte le commit et déclenche l’étape de création du build. Au moyen d’un outil comme Jenkins ou CircleCI, le pipeline compile le code source pour en faire un exécutable. Par exemple, si le codebase est une application Java, l’opération passe par l’exécution d’un build Maven ou Gradle.
Ensuite, le pipeline convertit l’application en un artefact à déployer. S’il s’agit d’une application web, cette étape peut nécessiter la création d’une image Docker. Le pipeline transmet ensuite cette image à un registre Docker, par exemple Docker Hub ou un registre privé hébergé sur AWS ECR ou Google Container Registry.
Une fois le build terminé, le pipeline passe à l’étape de test et crée un environnement de test, souvent à l’aide d’un outil d’orchestration de containers comme Kubernetes. Il déploie l’application dans cet environnement et exécute une suite de tests automatisés. Ces tests peuvent inclure des tests unitaires exécutés par JUnit, des tests d’intégration exécutés par un outil comme Postman et des tests de bout en bout exécutés par Selenium.
Si les tests sont concluants, le pipeline passe à l’étape de déploiement, où il élimine l’environnement de test et crée un environnement de production. Le pipeline déploie ensuite l’application dans cet environnement, souvent en appliquant une stratégie de déploiement Blue/Green pour minimiser les interruptions et favoriser un rollback rapide si nécessaire.
Au cours de la journée, le pipeline répète ce processus pour chaque nouveau commit. En parallèle, il effectue également d’autres tâches: gestion de la migration des bases de données au moyen d’outils comme Flyway ou Liquibase, exécution d’analyse du code statique avec SonarQube et même mise à l’échelle automatique de l’environnement de production en fonction des schémas de trafic.
Le pipeline transmet également un feedback en temps réel à l’équipe de développement. Il notifie les résultats du build à un canal Slack, crée des tickets dans Jira pour les builds défaillants et actualise un tableau de bord d’indicateurs de performance du pipeline en temps réel.
Une fois sa journée terminée, le pipeline CI/CD se tient prêt à traiter son prochain commit, fidèle à sa mission de livraison de logiciels de qualité à un rythme soutenu. La journée d’un pipeline peut sembler monotone, mais chaque tâche accomplie rapproche l’équipe de son objectif de création de valeur pour ses utilisateurs.
Étapes d’un pipeline CI/CD
En tant que processus technologique, le CI/CD s’intègre aux systèmes de contrôle de version, aux serveurs de build et à d’autres outils de développement. Le pipeline standard englobe plusieurs étapes, chacune destinée à valider le code sous différents angles et à confirmer sa validité pour le déploiement.
Lorsqu’un développeur soumet le code au dépôt de contrôle de version, le pipeline se déclenche en automatisant les étapes de source, build, test et déploiement.
Phase de source
L’étape de source mobilise le système de contrôle de version, où les développeurs soumettent leurs modifications du code. Le pipeline CI/CD surveille le dépôt et déclenche l’étape suivante à la détection d’un nouveau commit. Git, Mercurial et Subversion comptent parmi les systèmes de contrôle de version couramment utilisés.
Phase de build
À l’étape de build, le pipeline CI/CD compile le code source et crée des artefacts exécutables. L’étape de build peut également inclure le packaging du code dans un container Docker ou un autre format de déploiement. Pour être fiable, le processus de build doit être reproductible et uniforme.
Phase de test
La phase de test du pipeline CI/CD passe par l’exécution d’une série de tests automatisés sur les artefacts créés. Ces tests peuvent inclure des tests unitaires, des tests d’intégration et des tests de bout en bout. Dans cette phase, l’automatisation des tests est indispensable pour identifier et corriger rapidement les problèmes.
Phase de déploiement
L’étape de déploiement est la dernière du pipeline CI/CD. Dans un processus de livraison continue, cette étape prépare le déploiement manuel de la version. Par contraste, dans un processus de déploiement continu, le pipeline déploie automatiquement la version dans l’environnement de production.
Types de pipelines CI/CD
Pour un programme simple, un pipeline CI/CD regroupe généralement les étapes source, build, test et déploiement. Les développeurs soumettent le code à un système de contrôle de version tel que Git. Le pipeline déclenche un processus de build pour compiler le code et créer les artefacts. Des tests automatiques sont pratiqués sur ces artefacts à des fins d’assurance qualité. Si les tests sont concluants, le pipeline déploie les artefacts dans un environnement de production. Les outils Jenkins, CircleCI ou GitLab CI/CD peuvent orchestrer ce processus.
Pipelines CI/CD cloud-native
Un pipeline CI/CD cloud-native capitalise sur la modularité intrinsèque des microservices pour faciliter leur développement et leur déploiement séparément les uns des autres. Lorsque chaque microservice possède son propre pipeline, les tests, la création des builds et le déploiement sont exécutés isolément. Le risque d’anomalies en cascade s’en trouve atténué et la livraison accélérée.
Dans le pipeline basé sur les microservices, la sécurité est appliquée à plusieurs niveaux. En particulier, chaque microservice est traité en tant que périmètre de sécurité potentiel, avec son propre ensemble d’autorisations et de contrôles. L’application de pratiques de sécurité des containers, par exemple l’analyse des images et la protection au runtime, préserve l’intégrité des microservices.
Très répandus parmi les technologies de pipeline cloud-native, les maillages de services comme Istio ou Linkerd proposent une méthode homogène pour sécuriser, connecter et surveiller les microservices en activant mTLS et d’autres fonctions similaires pour la communication interservices.
Les pipelines CI/CD cloud-native font appel aux outils cloud pour les dépôts de code, les serveurs de build et les cibles de déploiement. Dans AWS, un pipeline peut par exemple utiliser CodeCommit pour le contrôle de source, CodeBuild pour la création des builds et les tests, puis CodeDeploy pour le déploiement. Ces pipelines peuvent s’adapter à la demande, s’intégrer à des fonctions cloud-native et proposer une tarification à l’usage.
Pipelines «Kubernetes-native»
L’architecture extensible de Kubernetes s’adapte bien aux principes CI/CD, en ce sens qu’elle prend en charge une livraison rapide et fiable des applications. Le pipeline Kubernetes-native agit directement au sein d’un cluster Kubernetes, capitalisant ainsi sur ses fonctionnalités d’orchestration, de mise à l’échelle et de gestion des applications containerisées. Il peut déployer des applications containerisées sur plusieurs clusters, traiter les rollbacks et gérer la détection des services. Les étapes du pipeline, notamment build, tests et déploiement, sont exécutées en tant que pods Kubernetes, garants de l’isolement et du contrôle des ressources.
La sécurité dans les pipelines Kubernetes-native repose sur des pratiques spécifiques à Kubernetes. Par exemple, le contrôle d’accès basé sur les rôles (RBAC) sert à restreindre les autorisations des étapes du pipeline, limitant ainsi l’ampleur de l’impact d’un problème de sécurité potentiel. De plus, les politiques de sécurité des pods peuvent renforcer la posture de sécurité en limitant les capacités des containers qui exécutent les étapes du pipeline.
Des outils CI/CD comme Jenkins X, Tekton et Argo CD, conçus pour les pipelines Kubernetes-native, offrent des fonctions comme la promotion d’environnement via GitOps et des environnements de prévisualisation pour les pull requests
Pipeline CI/CD pour monorepo
Un monorepo est un dépôt contenant plusieurs projets logiques. Le pipeline CI/CD d’un monorepo doit être capable de gérer les modifications avec efficacité sur plusieurs projets. Il doit développer et tester uniquement les projets concernés par un commit, et non l’ensemble du dépôt.
Les développeurs peuvent recourir à des outils CI/CD évolués, tels que Bazel ou Cloud Build de Google, pour créer un graphe de dépendances du codebase, à partir duquel ils peuvent développer et tester une nouvelle fois les seules parties du codebase qui dépendent du code modifié.
La sécurité dans un pipeline CI/CD monorepo empêche les modifications de se répercuter sur d’autres composants. Les tests automatisés et l’analyse du code statique identifient en amont les problèmes de sécurité potentiels dans le pipeline. Les pratiques de revue du code doivent être rigoureuses pour maintenir l’intégrité du monorepo.
CI/CD dans le cloud
Les plateformes cloud proposent de puissantes fonctions pour l’implémentation de pipelines CI/CD, notamment une évolutivité illimitée, une disponibilité élevée et des mécanismes internes de reprise après sinistre.
L’élasticité des ressources cloud favorise l’évolutivité dynamique des processus CI/CD en fonction du workload, gage d’efficacité et d’optimisation des coûts. Un processus CI/CD dans le cloud est également bénéfique aux équipes de développement distribuées, car elle facilite la collaboration et une approche plus globale du développement logiciel.
CI/CD dans AWS
Amazon Web Services (AWS) propose une suite d’outils pour mettre en œuvre un pipeline CI/CD. AWS CodeCommit, un service de contrôle de source entièrement managé, héberge des dépôts Git sécurisés et facilite le codage et le contrôle de version collaboratifs.
Le service de création de build managé AWS CodeBuild compile le code source, exécute les tests et produit des packages logiciels prêts à déployer. AWS CodePipeline, un service d’intégration continue et de livraison continue, orchestre le workflow du code source jusqu’au déploiement, vous permettant de modéliser, visualiser et automatiser votre processus de création de versions logicielles.
Enfin, le service de déploiement automatisé AWS CodeDeploy simplifie le déploiement d’applications dans divers services AWS comme AmazonEC2, AWSLambda ou AmazonECS. AWS s’intègre également à d’autres outils open-source courants pour former une solution CI/CD complète et flexible.
CI/CD dans Azure
Le service cloud AzurePipelines prend en charge l’intégration continue et la livraison continue. Compatible avec tous les langages et toutes les plateformes, il forme une solution polyvalente pour une diversité d’environnements de développement.
AzureRepos fournit un nombre illimité de dépôts Git privés hébergés dans le cloud, permettant aux équipes de collaborer et de gérer leur code avec efficacité. Azure Test Plans est une solution complète pour gérer, tracer et planifier les activités de test et garantir une livraison de logiciels de haute qualité.
Azure propose également une série d’extensions et d’intégrations avec les outils open-source courants pour enrichir ses capacités en tant que plateforme CI/CD.
CI/CD dans GoogleCloud
Google Cloud Platform (GCP) propose Cloud Build for CI/CD, un produit sans serveur permettant aux développeurs de concevoir, tester et déployer des logiciels dans le cloud. CloudBuild vous permet de définir des workflows personnalisés pour la conception, les tests et le déploiement sur de multiples environnements: VM, architectures sans serveur, Kubernetes, Firebase et autres.
Google Cloud Source Repositories est une plateforme centralisée qui permet de stocker, gérer et assurer le suivi du code. Elle offre ainsi un dépôt Git sécurisé, évolutif et à haute disponibilité. GCP s’intègre également à des outils open-source courants comme Git, Jenkins et Spinnaker, pour aboutir à une solution CI/CD flexible et personnalisable.
CI/CD dans IBMCloud
IBMCloud propose un ensemble complet d’outils pour implémenter un pipeline CI/CD. Le service IBM Cloud Continuous Delivery fournit des chaînes d’outils incluant des intégrations et des modèles d’outils ouverts pour automatiser la création des builds, le déploiement et la gestion des applications.
IBM Cloud Code Engine est une plateforme sans serveur intégralement managée qui exécute vos workloads containerisés, dont vos applications web, microservices, fonctions basées sur les événements ou traitements par lots. IBM Cloud s’intègre également aux outils open-source courants tels que Git, Jenkins et Tekton, offrant ainsi une alternative polyvalente pour l’implémentation CI/CD.
Pipelines CI/CD: les bonnes pratiques
Pour améliorer votre workflow DevOps et la livraison de logiciels, intégrez ces bonnes pratiques à votre cycle de développement.
Dépôt source unique
Un dépôt source unique vous servira de système de gestion du code source, qui centralise le stockage de tous les fichiers et scripts nécessaires à la création des builds. Le dépôt doit inclure tous les composants, du code source à la structure des bases de données, en passant par les bibliothèques, les fichiers de propriétés et le contrôle de version. Il doit également héberger les scripts de test et les scripts de création d’applications.
Le recours à un dépôt source unique améliore la collaboration, favorise l’homogénéité, simplifie le contrôle de version, réduit le risque de conflit et facilite le suivi des modifications.
Créez le build une seule fois
Compilez le code et créez les artefacts du build une fois seulement, puis faites progresser les artefacts dans le pipeline. Cette pratique favorise l’uniformité en évitant les divergences susceptibles de survenir lorsque le code est développé à chaque étape.
Automatisez le processus de build
L’automatisation de la création des builds, à savoir la conversion du code en artefacts prêts au déploiement, s’affranchit des erreurs humaines et accélère le processus de développement. Vos scripts de build doivent être complets pour créer tous les composants avec une seule commande: fichiers serveur web, scripts de bases de données, logiciels applicatifs, etc. Les processus CI doivent automatiquement créer les paquets et compiler le code en une application exploitable.
Privilégiez l’automatisation
Automatisez le plus possible, de l’intégration du code aux tests et au déploiement, en passant par le provisionnement et la configuration de l’infrastructure. L’automatisation permet de gagner en efficacité tout en garantissant la répétabilité. Une fois que les développeurs ont transféré le code au dépôt partagé, le serveur CI lance automatiquement un processus de build et de test, qui en parallèle détecte les éventuels problèmes. Ce processus réduit radicalement le travail d’intégration manuelle des développeurs et les recentre sur les améliorations du code.
Testez tôt et souvent
Intégrez des tests automatisés dès les premières étapes du pipeline. Exécutez des tests unitaires après l’étape de build, suivis de tests d’intégration et de tests de bout en bout. Créez les scripts de test de telle sorte qu’ils recalent le build si le code échoue au test.
Utilisez des environnements de test de clones
Testez le nouveau code dans un environnement jumeau de l’environnement de production, plutôt que dans l’environnement de production réel. Appliquez des scripts de test rigoureux dans cet environnement cloné pour détecter et identifier les bugs éventuels non repérés dans le processus de test initial de la version prébuild.
Déployez fréquemment
Des déploiements fréquents réduisent le volume des modifications, facilitant ainsi l’identification et la correction des problèmes. De plus, ils contribuent à un feedback plus rapide, simplifient les rollbacks et accélèrent l’apport de valeur aux utilisateurs.
Imposez le CI/CD comme seul moyen de déploiement
Interdisez les déploiements manuels en production. Toutes les modifications doivent passer par le pipeline pour garantir que chaque modification est testée, cohérente et traçable.
Misez sur la visibilité
Les équipes de développement doivent avoir accès aux derniers exécutables, ainsi qu’à un historique de toutes les modifications apportées au dépôt. Le contrôle de version doit être utilisé pour gérer les handoffs et permettre aux développeurs d’identifier la version la plus récente.
Optimisez la boucle de feedback
Configurez le pipeline pour qu’il transmette un feedback rapide et utile. Les développeurs doivent être avertis immédiatement si leurs modifications cassent le build ou échouent aux tests. Un feedback rapide favorise une remédiation sans délai et fluidifie la progression dans le pipeline.
Nettoyez les environnements après chaque version
Automatisez le nettoyage des environnements de test et de préproduction après chaque version pour économiser des ressources et reprendre chaque déploiement dans un état vierge.
Pipelines CI/CD: KPI
Temps de cycle ou de déploiement
Le temps de cycle, également appelé temps de déploiement, représente le délai entre le commit du code et le déploiement en production. Il constitue un indicateur central de l’efficacité du pipeline CI/CD. Un temps de cycle court accélère la création de valeur pour les utilisateurs et le feedback pour les développeurs.
Fréquence de développement
La fréquence de développement traduit la fréquence de commit des modifications du code dans le système de contrôle de version. Une fréquence de développement élevée indique un processus de développement dynamique, où des modifications plus gérables et à portée plus restreinte réduisent le risque d’erreur.
Délai de modification
Le délai de modification représente le délai entre le commit de la modification et son déploiement, révélant ainsi la vitesse du pipeline CI/CD. Un délai court aboutit à une production de valeur accélérée et à des boucles de feedback plus rapides.
Taux d’échec des modifications
Le taux d’échec des modifications est le pourcentage de modifications qui mènent à une défaillance en production. Un taux bas est le signe d’un processus de livraison logicielle de haute qualité. Le taux d’échec des modifications dépend de la qualité des tests, des pratiques de revue de code, des pratiques de déploiement et d’autres facteurs.
MTTR vs MTTF
Le délai moyen de reprise (MTTR) et le délai moyen avant défaillance (MTTF) sont des indicateurs de la fiabilité du pipeline CI/CD. Le MTTR représente le délai moyen pour récupérer d’une défaillance, tandis que le MTTF mesure la durée moyenne entre deux défaillances consécutives. Un indicateur MTTR bas et un indicateur MTTF élevé sont révélateurs d’un pipeline fiable.
Outils CI/CD
Outils d’intégration continue
Codefresh
Codefresh est une plateforme CI/CD conçue pour Kubernetes. Elle prend en charge le cycle complet de développement d’applications, du commit jusqu’au déploiement. Son infrastructure Docker-native caractéristique permet de créer rapidement des builds isolés et offre un environnement polyvalent pour le développement, les tests et le déploiement d’applications containerisées.
Bitbucket Pipelines
Bitbucket Pipelines est un service CI/CD intégré à Bitbucket. Il permet aux équipes de développement de concevoir, tester et déployer automatiquement le code selon un fichier de configuration dans leur dépôt. Son intégration étroite avec Bitbuck et la suite d’outils Atlassian peut nettement fluidifier le travail des équipes appartenant déjà à l’écosystème Atlassian.
Jenkins
Jenkins est un serveur d’automatisation open-source où les développeurs peuvent concevoir, tester et déployer leurs logiciels en toute fiabilité. Grâce à sa prise en charge étendue des plug-ins et des builds distribués, cet outil s’avère extrêmement flexible pour les pipelines CI/CD complexes.
CircleCI
CircleCI est une plateforme d’intégration et de livraison continues de nouvelle génération qui accélère le développement logiciel et la création de versions. Axé sur la simplicité et l’efficacité, CircleCI offre des fonctions intelligentes de mise en cache automatique, de parallélisme et d’orchestration des tâches pour optimiser le processus de livraison des logiciels.
Bamboo
Bamboo, autre outil de la suite Atlassian, fournit des fonctions d’intégration et de livraison continues avec intégration des logiciels Git et JIRA. Même s’il n’est pas aussi extensible que Jenkins, Bamboo possède des fonctions prêtes à l’emploi qui simplifient la configuration pour les équipes de développement en quête d’une implémentation rapide et sans complication.
GitLab CI
GitLab CI, partie intégrante de GitLab, est une solution solide qui prend en charge la totalité du cycle DevOps. GitLab CI propose des configurations de pipeline flexibles et une intégration étroite avec le suivi des anomalies et le contrôle de source de GitLab, offrant une solution tout-en-un de développement et déploiement logiciel.
Outils de livraison et de déploiement continus
Codefresh
Codefresh prend en charge la livraison continue en plus de ses fonctionnalités d’intégration continue. L’isolement de son environnement et sa prise en charge des graphiques Helm assurent une livraison efficace et fiable des applications Kubernetes.
Argo CD
Argo CD est un outil de livraison continue GitOps déclaratif pour Kubernetes. Utilisant les dépôts Git comme source d’informations centralisée pour la définition des applications, il synchronise automatiquement l’application lorsque des modifications sont détectées dans le dépôt.
GoCD
GoCD est un outil open-source spécialisé dans la modélisation et la visualisation de workflows complexes de livraison continue. Sa cartographie de la chaîne de valeur permet de visualiser toute la séquence, du commit au déploiement, pour mieux cerner et contrôler le processus de livraison de logiciels.
AWS CodePipeline
AWS CodePipeline est un service de livraison continue entièrement managé qui automatise les pipelines de création de version, gage de mises à jour rapides et fiables des applications. Comme il appartient à la suite AWS, CodePipeline s’intègre en toute transparence aux autres services AWS, d’où une gestion et une automatisation efficaces de l’ensemble du processus de création de version dans l’écosystème AWS.
Azure Pipelines
Partie intégrante des services Azure DevOps de Microsoft, Azure Pipelines, est un service cloud qui fournit des fonctionnalités CI/CD pour les applications, quels que soient leur langage et leur plateforme. Il se distingue par ses capacités étendues d’intégration, son interopérabilité avec les principaux outils et services couramment utilisés en développement, et ses minutes gratuites illimitées de développement pour les projets open-source.
Spinnaker
Spinnaker, la plateforme multicloud de livraison continue initialement développée par Netflix, offre des possibilités de configuration étendues et de puissantes fonctionnalités de déploiement transverses à plusieurs fournisseurs cloud. Privilégiant le déploiement, Spinnaker prend en charge plusieurs stratégies comme les versions Blue/Green et Canary, qui offrent un niveau de contrôle élevé sur le processus de livraison.
Applications CI/CD de machine learning
MLOps
MLOps, abréviation composée de machine learning et opérations, est une méthode visant à standardiser et rationaliser le cycle de développement et de déploiement d’un modèle de machine learning. Elle applique les principes CI/CD pour automatiser les tests, le déploiement et le suivi des modèles de machine learning, dans une perspective de fiabilité et d’uniformité des livraisons.
Techniques de génération de données synthétiques
Dans le développement de modèles de machine learning, la génération de données synthétiques est une méthode de création de données qui imitent des données réelles. Dans les pipelines CI/CD, cette approche est utile pour tester ces modèles, car elle fournit une méthode évolutive et conforme aux impératifs de confidentialité pour évaluer leur performance et leur exhaustivité.
Plateformes AIOps
L’AIOps, abréviation d’intelligence artificielle pour opérations informatiques, intègre l’IA et les techniques de machine learning dans les opérations IT. Dans le contexte CI/CD, l’AIOps peut automatiser et améliorer de nombreuses tâches opérationnelles, comme la détection des anomalies, la corrélation des événements et l’analyse des causes racines, avec à la clé une livraison de logiciels plus efficace.
Sécurité CI/CD
La vitesse et l’automatisation de la méthode CI/CD génèrent de nouveaux risques pour la sécurité, notamment :
- Exposition de données sensibles
- Utilisation de composants tiers non sécurisés
- Accès non autorisé si les outils CI/CD ne sont pas correctement protégés
Mais en priorisant la sécurité CI/CD par l’intégration de pratiques et d’outils de sécurité tout au long du pipeline, les entreprises peuvent s’assurer que les logiciels qu’elles fournissent sont à la fois fonctionnels et sécurisés. Cette pratique prend le nom de DevSecOps.
Pratiques de codage sécurisées
Les développeurs doivent appliquer des pratiques de codage sécurisé pour éviter d’introduire des vulnérabilités de sécurité dans le codebase. Les pratiques à privilégier sont notamment la validation des entrées, une gestion rigoureuse des erreurs et l’application du principe du moindre privilège.
Tests de sécurité
Intégrez des tests de sécurité automatisés dans le pipeline CI/CD. Analyse du code statique, analyse dynamique, tests d’intrusion… Plusieurs tests peuvent contribuer à repérer des vulnérabilités de sécurité avant le déploiement de l’application.
Sécurité du déploiement
La sécurité du déploiement passe par l’utilisation de protocoles sécurisés pour la transmission des données, la gestion des autorisations et les contrôles d’accès pendant le processus de déploiement, puis par un monitoring de l’application en production pour détecter d’éventuels incidents de sécurité.
Architecture sécurisée de pipeline CI/CD
Une architecture sécurisée de pipeline CI/CD intègre des contrôles de sécurité à chaque étape du pipeline. Utilisez des dépôts sécurisés pour le contrôle de source, effectuez des contrôles de sécurité pendant le processus de build, exécutez des tests de sécurité automatisés et appliquez des pratiques de déploiement sécurisées.
Sécurité IaC
Pratique incontournable en DevOps, l’IaC (Infrastructure as Code) est une méthode de gestion et de provisionnement de l’infrastructure informatique par des fichiers de définition lisibles par machine. La sécurité IaC suppose de gérer ces fichiers de définition et de protéger l’infrastructure qu’ils créent. Chiffrez les données sensibles, limitez l’accès aux fichiers IaC et effectuez régulièrement des audits de conformité de l’infrastructure en matière de sécurité.
Regard prospectif sur les nouvelles tendances CI/CD
Microservices et architectures sans serveur
À l’heure où les entreprises se tournent de plus en plus vers les microservices et les architectures sans serveur, les pipelines CI/CD doivent s’adapter pour gérer des déploiements plus complexes. Toute la difficulté réside dans le déploiement et la gestion de multiples services interdépendants, chacun pouvant utiliser des technologies et des plateformes de déploiement différentes.
Intelligence artificielle et machine learning
L’IA et le ML sont de plus en plus employés pour optimiser les pipelines CI/CD. Parmi leurs applications potentielles dans le contexte CI/CD, on peut citer la prédiction et la prévention des problèmes potentiels, l’optimisation de la consommation des ressources et l’automatisation de tâches plus complexes.
Infrastructure as Code (IaC)
L’IaC se généralise dans le monde du DevOps. À mesure qu’ils gagnent en maturité, les outils et pratiques IaC joueront un rôle toujours plus central dans les pipelines CI/CD.
Pipelines CI/CD : les questions fréquentes
- Rationalisation de ces processus
- Vérification de leur ordre de séquencement
- Traitement des éventuelles dépendances entre les tâches
Jenkins, CircleCI et Bamboo sont des outils CI/CD courants pour l’orchestration des pipelines. Quant à Kubernetes, il gagne du terrain dans ce domaine, notamment pour les architectures de microservices.
La cartographie de la chaîne de valeur (VSM, Value Stream Mapping) est une méthode de lean management consistant à analyser l’état actuel de la série d’événements qui mènent un produit du concept à la livraison, puis à concevoir son état futur. Dans le contexte de l’approche CI/CD, le VSM fournit une représentation graphique du flux de modifications du code, du développement à la production. Cette visualisation permet d’identifier les goulets d’étranglement, les redondances ou le gaspillage dans le processus. Elle permet aux équipes de visualiser la totalité du cycle de livraison, d’améliorer l’efficacité des flux et de raccourcir les délais.
En cartographiant la chaîne de valeur, les entreprises peuvent prendre des décisions basées sur des données concrètes pour optimiser leurs pipelines CI/CD et les aligner plus précisément sur leurs objectifs métiers.