Jump to section

L'approche CI/CD, qu'est-ce que c'est ?

Copier l'URL

Le modèle CI/CD, qui désigne l'intégration et la distribution ou le déploiement continus, a pour objectif de rationaliser et d'accélérer le cycle de vie de développement des logiciels.

La pratique de l'intégration continue (CI) consiste à intégrer automatiquement et régulièrement les modifications de code dans un référentiel de code source partagé.La distribution et/ou le déploiement continus (CD) désignent quant à eux un processus en deux volets qui englobe l'intégration, les tests et la distribution des modifications apportées au code. La distribution continue se limite au déploiement automatique dans les environnements de production, alors que le déploiement continu publie automatiquement les mises à jour dans ces environnements.

 

CI/CD Flow

 

Ensemble, ces pratiques sont souvent désignées par l'expression « pipeline CI/CD » et elles reposent sur une collaboration agile entre les équipes de développement et d'exploitation, que ce soit dans le cadre d'une approche DevOps ou d'ingénierie de la fiabilité des sites (SRE).

L'approche CI/CD aide les entreprises à éviter les bogues et les défaillances de code tout en assurant un cycle continu de développement et de mise à jour des logiciels.

À mesure que les applications évoluent, les fonctions de CI/CD peuvent réduire la complexité, accroître l'efficacité et rationaliser les flux de travail.

Grâce à l'automatisation des interventions manuelles généralement nécessaires à la mise en production d'un nouveau code, les temps d'arrêt sont limités et les publications de code sont plus rapides. Par ailleurs, en accélérant l'intégration des mises à jour et des modifications du code, vous accélérez également celle des commentaires des utilisateurs. Résultats : des utilisateurs et des clients plus satisfaits. 

Dans l'acronyme CI/CD, le terme « CI » désigne toujours l'intégration continue. Ce processus d'automatisation destiné aux équipes de développement facilite la fusion plus fréquente des modifications de code vers une branche partagée, ou « tronc commun ». Au fur et à mesure de ces mises à jour, des phases de tests automatisés se lancent afin de garantir la fiabilité des modifications du code fusionné.

Le concept de développement d'applications modernes consiste à faire travailler plusieurs développeurs simultanément sur différentes fonctions d'une même application. Toutefois, si une entreprise prévoit de fusionner tous ces morceaux de code source le même jour (le « merge day » ou « jour du fusionnement »), alors la tâche risque de s'avérer laborieuse et de nécessiter beaucoup de procédures manuelles et de temps.

En effet, lorsqu'un membre d'une équipe de développement isolé apporte une modification à une application, il existe un risque de conflit avec d'autres changements apportés au même moment par d'autres. Ce problème se complexifie encore si chaque développeur a personnalisé son propre environnement de développement intégré, au lieu d'en définir un seul dans le cloud, pour toute l'équipe.

L'intégration continue peut être envisagée comme une solution au problème du développement simultané de nombreuses branches d'application potentiellement conflictuelles.

Une intégration continue est efficace quand les modifications apportées à une application sont validées par la compilation automatique de l'application et l'exécution de différents niveaux de tests automatisés. Il s'agit de s'assurer que les modifications n'ont pas compromis l'application, notamment au moyen de tests unitaires et d'intégration. Il faut donc tout tester, des classes aux fonctions, en passant par les différents modules qui composent l'application. Si les tests automatisés révèlent un conflit entre le nouveau code et le code existant, l'intégration continue accélère la correction de ces bogues, à une fréquence plus régulière.

« CD » désigne la « distribution continue » et/ou le « déploiement continu », qui sont des concepts très proches, parfois utilisés de façon interchangeable. Ces deux termes concernent l'automatisation des étapes ultérieures du pipeline, mais ils sont parfois employés distinctement pour souligner le degré d'automatisation. Le choix entre distribution continue et déploiement continu dépend de la tolérance au risque et des besoins spécifiques des équipes de développement et d'exploitation.

La distribution continue automatise la publication du code validé dans un référentiel suite à l'automatisation des versions et des tests unitaires et d'intégration dans le cadre de l'intégration continue. Ainsi, pour obtenir un processus de distribution continue efficace, il est essentiel de l'intégrer dès le départ dans votre pipeline de développement.

La distribution continue implique une automatisation des tests et des publications de code à chaque étape, du fusionnement des modifications de code à la distribution des versions prêtes pour la production. À l'issue de ce processus, l'équipe d'exploitation est à même de déployer rapidement une application en production.

En général, dans le cadre de la distribution continue, les modifications apportées par l'équipe de développement à une application sont automatiquement testées et chargées dans un référentiel (tel que GitHub ou un registre de conteneurs), où elles peuvent être ensuite déployées dans un environnement de production actif par l'équipe d'exploitation. Cette solution pallie le manque de visibilité et de communication entre les équipes de développement et les équipes commerciales. Dans cette optique, l'objectif de la distribution continue est de disposer d'un code base déployable à tout moment en production, et de veiller à ce que le déploiement d'un nouveau code nécessite le moins d'efforts possible.

Le déploiement continu constitue la dernière étape d'un pipeline CI/CD mature. Prolongement de la distribution continue, il peut désigner le transfert automatique des modifications depuis le référentiel vers l'environnement de production, où elles peuvent être utilisées par les clients.

Le déploiement continu traite le problème de la surcharge des équipes d'exploitation par des processus manuels qui ralentissent la distribution des applications. Il s'appuie sur les bénéfices de la distribution continue pour automatiser l'étape suivante du pipeline.

Dans la pratique, dans le cadre du déploiement continu, une modification apportée à une application cloud pourrait être publiée quelques minutes seulement après la rédaction du code en question (en supposant qu'elle passe les tests automatisés). Il est ainsi beaucoup plus facile de recevoir et d'intégrer en continu les commentaires des utilisateurs. En associant toutes ces pratiques CI/CD connexes, le déploiement des applications devient plus sûr, car il est plus facile de distribuer de petites modifications l'une après l'autre, plutôt qu'en une seule fois.

En revanche, comme aucun contrôle manuel n'intervient à l'étape qui précède la mise en production, le déploiement continu mise en grande partie sur une automatisation bien pensée des tests. Autrement dit, cette pratique peut exiger un investissement initial conséquent, puisqu'elle implique l'élaboration de tests automatisés pour différentes étapes de test et de mise en production au sein du pipeline CI/CD.

L'approche CI/CD est une composante essentielle de la méthode DevOps, qui encourage la collaboration entre les équipes de développement et d'exploitation. Ces deux pratiques se concentrent sur l'automatisation des processus d'intégration du code. Elles visent à accélérer les processus selon lesquels une idée (par exemple, une nouvelle fonction, une demande d'amélioration ou la correction d'un bogue) passe de la phase de développement à celle du déploiement dans un environnement de production où elle peut apporter de la valeur à l'utilisateur.

Dans le cadre de travail collaboratif du modèle DevOps, la sécurité est une responsabilité partagée, intégrée du début à la fin. Cette notion est si importante qu'elle a donné naissance à l'expression « DevSecOps » qui souligne la nécessité d'intégrer la sécurité aux projets DevOps. Le modèle DevSecOps, abréviation de Development, Security and Operations (développement, sécurité et exploitation), est une approche de la culture, de l'automatisation et de la conception des plateformes qui intègre la sécurité en tant que responsabilité partagée tout au long du cycle de vie informatique. L'un de ses composants clés est la mise en place de pipelines CI/CD sécurisés.

La sécurité des pipelines CI/CD sert à protéger les pipelines de code au moyen de contrôles et de tests automatisés afin de prévenir les vulnérabilités lors de la distribution des logiciels. L'intégration de la sécurité à un pipeline permet de préserver le code des attaques, d'éviter des fuites de données, de respecter les politiques et d'assurer le contrôle de la qualité.

Sans mesures de sécurité adaptées, le caractère rapide du développement et du déploiement peut exposer les pipelines à certains risques :

  • Exposition de données sensibles à des sources extérieures
  • Utilisation de code ou de composants tiers non sécurisés
  • Accès non autorisé aux référentiels de code source ou aux outils de développement

L'identification et l'atténuation des vulnérabilités tout au long du cycle de développement d'un logiciel garantissent que les modifications du code sont testées de manière approfondie et qu'elles respectent les normes de sécurité avant leur déploiement en production.

Les outils de CD/CI permettent aux équipes d'automatiser le développement, le déploiement et le test. Certains outils gèrent spécifiquement la partie intégration (CI), d'autres le développement et le déploiement (CD), et d'autres encore les tests continus ou les fonctions connexes.

Les pipelines Tekton servent de framework CI/CD pour les plateformes Kubernetes et offrent une expérience CI/CD cloud-native standard avec conteneurs.

En dehors des pipelines Tekton voici d'autres outils de CI/CD Open Source qui pourraient vous intéresser :

  • Jenkins : outil de gestion capable de gérer aussi bien un simple serveur de CI qu'un hub de CD complet
  • Spinnaker : plateforme de CD conçue pour les environnements multicloud
  • GoCD : serveur de CI/CD particulièrement axé sur la modélisation et la visualisation
  • Concourse : outil Open Source basé sur une approche d'automatisation continue
  • Screwdriver : plateforme de création conçue pour le CD

Vous pouvez également vous tourner vers les outils de CI/CD gérés proposés par différents fournisseurs. Les principaux fournisseurs de cloud public offrent tous des solutions de CI/CD, tout comme GitLab, CircleCI, Travis CI, Atlassian Bamboo et bien d'autres.

Par ailleurs, la plupart des outils essentiels au DevOps font partie du processus de CI/CD. Les outils qui servent à l'automatisation de la configuration (comme Ansible, Chef et Puppet), à l'exécution de conteneurs (comme Docker, rkt et cri-o) et à l'orchestration des conteneurs (Kubernetes) ne sont pas des outils de CI/CD à proprement parler, mais ils apparaissent dans de nombreux workflows CI/CD.

Il existe plusieurs façons de mettre en œuvre une approche CI/CD en fonction de votre stratégie de développement d'applications et de votre fournisseur de cloud. Red Hat OpenShift Service on AWS propose plusieurs options pour faciliter votre workflow CI/CD, comme Tekton et OpenShift Pipelines. Avec la solution Red Hat® OpenShift, les entreprises peuvent adopter l'approche CI/CD afin d'automatiser les étapes de création, de test et de déploiement d'applications sur plusieurs plateformes cloud et sur site. 

Nos experts peuvent vous aider à mettre en place les outils, les pratiques et la culture nécessaires pour moderniser efficacement vos applications et accélérer le développement d'applications cloud-native.

Red Hat® OpenShift® aide les entreprises à améliorer la productivité de l'équipe de développement, à automatiser les pipelines CI/CD et à déployer leurs efforts de sécurité plus tôt et tout au long du cycle de développement.

Et parce qu'elle exécute chaque étape du pipeline CI/CD dans son propre conteneur, la solution Red Hat OpenShift Pipelines permet la mise à l'échelle indépendante de chacune de ces étapes afin de respecter les exigences du pipeline. Les équipes d'administration et de développement peuvent ainsi créer des modèles de pipeline pour les applications en fonction des besoins spécifiques de l'entreprise et de ses exigences en matière de sécurité.

Red Hat OpenShift GitOps est un opérateur qui fournit un workflow intégrant des référentiels Git, des outils d'intégration et de distribution continues (CI/CD) et Kubernetes. Il permet de développer des logiciels plus rapidement et de manière plus sûre et évolutive, sans sacrifier la qualité.L'opérateur OpenShift GitOps permet aux clients de créer et d'intégrer des workflows de distribution continue déclaratifs et basés sur Git directement sur leur plateforme de développement d'applications.

La solution Red Hat Ansible® Automation Platform comprend tous les outils dont vous avez besoin pour mettre en œuvre l'automatisation dans votre entreprise, notamment une solution orientée événements, des analyses et des collections de contenus préconçues. Grâce à son langage courant basé sur YAML et à son approche axée sur l'état souhaité, vous pouvez utiliser les mêmes contenus d'automatisation pour les tâches quotidiennes ainsi que pour votre pipeline CI/CD. En outre, comme cette solution est compatible avec quasiment tous les aspects de votre infrastructure, il est plus facile et rapide de déployer des environnements de développement, test et production cohérents, augmentant ainsi la fiabilité et la résilience de vos applications.

La solution Ansible Automation Platform s'intègre également à Red Hat Advanced Cluster Management for Kubernetes pour l'orchestration de clusters Kubernetes dans votre pipeline CI/CD. Elle facilite aussi la création et la maintenance des opérateurs Red Hat OpenShift grâce à un langage d'automatisation lisible par l'homme.

En savoir plus

Article

Un ingénieur DevOps, qu'est-ce que c'est ?

Les membres d'une équipe d'ingénierie DevOps possèdent un ensemble unique de compétences et de connaissances qui favorisent la collaboration, l'innovation et le changement culturel au sein d'une entreprise.  

Article

L'approche CI/CD, qu'est-ce que c'est ?

L'approche CI/CD garantit une automatisation et une surveillance continues tout au long du cycle de vie des applications, des phases d'intégration et de test jusqu'à la distribution et au déploiement.

Article

Le DevSecOps, qu'est-ce que c'est ?

Si vous souhaitez tirer pleinement parti de l'agilité et de la réactivité d'une approche DevOps, vous devez également intégrer la sécurité informatique au cycle de vie complet de vos applications.