Skip to main content

L’intégration continue et la livraison continue (CI/CD) sont les champs gravitationnels autour desquels l’organisation DevOps moderne gravite. Les organisations qui souhaitent créer un code rentable, relativement exempt de bugs et à grande vitesse doivent adopter les pipelines CI/CD comme une architecture vitale de leur système de livraison logicielle.

Avant que les pipelines d’intégration continue et de livraison continue ne deviennent populaires, les modifications de code étaient introduites manuellement dans les systèmes de production via des processus ad hoc, souvent sans tests standardisés. Heureusement, j’ai survécu pour raconter les histoires effrayantes d’environnements de test logiciel dépourvus de ces processus essentiels.

À l’inverse, j’ai vu de mes propres yeux comment les outils et processus CI/CD offrent un cadre efficace pour livrer rapidement et de façon fiable des logiciels de qualité.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

Fort de mon expérience professionnelle, je vais expliquer ce qu’est un pipeline CI/CD, comment il fonctionne et pourquoi les équipes d’ingénierie logicielle l’ont adopté à la fois de façon pratique et philosophique, ainsi que d’autres principes comme la méthode Agile pour les tests.

Qu’est-ce qu’un pipeline CI/CD ?

Un pipeline CI/CD est un processus de développement et de livraison logicielle transparent, automatisé et fiable. Un pipeline CI/CD se compose de deux éléments distincts : l’intégration continue et la livraison continue, qui facilitent un flux de travail DevOps agile.

Les deux composants s’appuient fortement sur l’automatisation pour réduire les erreurs et garantir une ingénierie logicielle de haute qualité en éliminant les processus manuels fastidieux. En résumé, un pipeline CI/CD fournit une série d’étapes pour la livraison automatisée de logiciels.

La partie CI encourage les développeurs, programmeurs et ingénieurs à construire des logiciels en écrivant du code et en exécutant souvent des tests. Ils sont incités à intégrer régulièrement leurs modifications de code et nouvelles fonctionnalités sous forme de petits lots, dans le dépôt de code source.

En revanche, la partie CD garantit qu’une organisation logicielle dispose en permanence d’un artefact prêt à être déployé, déjà validé et contrôlé par des vérifications de sécurité.

Les quatre grandes étapes d’un pipeline CI/CD

Étape Source

C’est le point de départ du pipeline. Elle est déclenchée ou initiée lorsqu’un développeur apporte une modification dans une base de code. Typiquement, cela se produit lorsqu’un développeur effectue une commande git push ou git merge pour soumettre du code source dans le dépôt d’un système de gestion de version.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
Name*

Étape Build

L’étape de build correspond, pour l’essentiel, à l’étape de compilation. Dans les systèmes de conteneurs basés sur la microarchitecture comme Docker, cela consiste à empaqueter le code source du projet et ses dépendances en unités autonomes. Celles-ci sont ensuite compilées pour produire une instance exécutable de l’application logicielle. Cependant, il convient de noter que l’étape de compilation est nécessaire pour les langages comme Java et C++, mais elle est ignorée pour les langages interprétés comme Python et JavaScript.

Lorsqu’un artefact logiciel échoue à cette étape, cela révèle souvent des problèmes fondamentaux plus profonds, tels qu’une mauvaise configuration architecturale. Cela signifie invariablement que les architectes et ingénieurs logiciels doivent reprendre le problème à la base pour le corriger.

Étape Test

Comme son nom l’indique, il s’agit de la phase de test du pipeline. Ici, l’automatisation intégrée d’un pipeline CI/CD prend toute son importance en faisant gagner du temps et de l’effort à l’équipe. Divers tests tels que les tests de fumée, les tests unitaires et les tests d’intégration sont automatisés et effectués pour évaluer la validité et la logique de l’application.

Étape Déploiement

À l’étape de déploiement, l’instance testée et exécutable de l’application est publiée dans l’environnement de déploiement requis. Les organisations maintiennent généralement plusieurs environnements de préproduction pour diverses raisons.

Par exemple, les environnements alpha servent aux tests d’acceptation utilisateur pour détecter les bugs dans l’application avant qu’elle ne soit distribuée aux utilisateurs finaux. La version bêta est une diffusion limitée à quelques utilisateurs sélectionnés ; enfin, il y a l’environnement de production destiné au grand public. L’étape de déploiement se caractérise par la nécessité de maintenir un niveau acceptable d’assurance qualité.

Qu’est-ce que l’intégration continue (CI) ?

CI signifie intégration continue, tandis que CD désigne la livraison continue. Ensemble, elles assurent que les équipes DevOps disposent d’une méthode durable pour générer des versions logicielles fiables. En les combinant, on raccourcit le cycle de temps entre la conception, l’idéation et la mise en production de logiciels utilisables. 

Cependant, ces deux piliers du pipeline moderne de livraison logicielle ne sont ni l’envers ni l’endroit d’une même pièce, ni le yin et le yang d’un même phénomène.

L’intégration continue et la livraison continue sont toutes deux suffisamment nuancées et différentes pour justifier une explication détaillée et séparée.

Pourquoi l’intégration continue est-elle nécessaire ?

Le rôle de l'intégration continue (CI) est de fournir un processus rationalisé, fiable et automatisé pour écrire, construire et tester des applications logicielles. En tant que processus, la CI vise à construire, tester et fusionner le code source dans la base de code d’un projet plusieurs fois par jour.

Le processus de CI cherche également à assurer un niveau constant de productivité logicielle. Il y parvient en promouvant les pratiques DevOps qui encouragent les tests automatisés et la fusion fréquente de nouveaux codes dans un dépôt central.

Les développeurs produisent généralement beaucoup de code source avec régularité, soit pour créer de nouvelles fonctionnalités, soit pour corriger des bugs dans les fonctionnalités existantes. Toutefois, les programmeurs travaillent rarement seuls : ils évoluent en équipes de développement où la collaboration avec d'autres codeurs est cruciale pour la réussite du projet.

Ainsi, laisser leur code sur leurs ordinateurs locaux trop longtemps est préjudiciable pour le reste de l'équipe. Entre autres raisons, intégrer un nouveau code trop tard dans le cycle de publication pourrait par inadvertance casser d'autres fonctionnalités.

Les outils d'intégration continue maximisent la pratique consistant à encourager les développeurs à fusionner leurs modifications de code dans le dépôt partagé de l'équipe. De préférence, plusieurs fois par jour.

Qu'est-ce que la livraison continue (CD) ?

Comme mentionné ci-dessus, la livraison continue intervient après l'intégration continue. Elle englobe les processus et l’infrastructure soutenant la préparation des modifications du code pour leur publication dans l’environnement de production. L’objectif global de la CD est de garantir qu’une organisation ait en permanence dans sa pipeline un artefact logiciel construit, testé, validé et prêt à être déployé.

L’infrastructure de la CD pour l’allocation de ressources et le déploiement cherche à fournir une pipeline rapide mais durable et sans erreur pour préparer et publier les versions logicielles en production. Elle vise aussi à réduire le temps nécessaire pour effectuer les vérifications de sécurité et déployer les artefacts logiciels.

Pourquoi la CD ?

Tout comme l'intégration continue, les outils de CD reposent fortement sur l'automatisation et les tests automatisés pour valider l'intégrité d'une version logicielle avant son déploiement. Ce processus permet également aux équipes d’ingénierie logicielle d’établir une base de qualité pour leur code avant la mise en production.

Il convient de noter que, bien que la livraison continue soit un processus automatisé, une intervention manuelle reste nécessaire à cette étape du pipeline.

Différence entre la livraison continue et le déploiement continu

La livraison continue et le déploiement continu poursuivent le même objectif mais diffèrent considérablement dans leur exécution.

  • Déploiement continu : chaque modification de code fusionnée dans la base de code est automatiquement déployée en production. Il n'y a aucun mécanisme d’approbation ni de processus manuel pour agir en tant que soupape de sécurité. Il s’agit d’un processus totalement automatisé pour le déploiement réel.
  • Livraison continue est un processus partiellement manuel, mais il rend la stratégie de publication bien plus sécurisée et durable.

Pourquoi une pipeline CI/CD est importante en DevOps ?

infographie de ce qu'est DevOps
Le cycle de vie DevOps est un processus itératif

Un peu de perspective historique est nécessaire pour comprendre le besoin et l’évolution des méthodes actuelles de livraison logicielle. Aux débuts du développement d’applications, le modèle en cascade était en vogue.

Ce modèle simple traitait un projet logiciel en le découpant en phases linéaires et successives. Il suivait une méthodologie rigide qui n’autorisait aucun chevauchement des phases : une phase devait être terminée avant de commencer la suivante. De plus, chaque étape dépendait des livrables de la précédente.

Ainsi, le modèle global nécessitait une certaine spécialisation des tâches pour fonctionner. Cependant, cette spécialisation a forcé les équipes d’ingénierie logicielle et de test à être isolées dans leurs propres silos, les développeurs, testeurs et ingénieurs fiabilité travaillant souvent en vase clos.

Le modèle en cascade

Le modèle en cascade était idéal pour une époque où les entreprises de logiciels livraient leurs produits aux clients sous forme de CD, avec des dates de lancement annoncées publiquement. Cependant, ce modèle est inadapté à l'ère moderne où la production rapide de code est valorisée. Cela est d’autant plus vrai avec le cloud computing et les modèles omniprésents de logiciels en tant que service (SaaS), qui ont élevé les attentes des utilisateurs finaux en matière d’améliorations logicielles continues et d’intégration continue de nouvelles fonctionnalités.

Pour de nombreuses raisons, le modèle en cascade s’est révélé insuffisant.

En plus des bonnes pratiques telles que la méthodologie agile, les équipes DevOps modernes intègrent des pipelines CI/CD afin de livrer des logiciels de haute qualité, bien testés et à grande vitesse, de manière durable.

Grâce à DevOps, CI/CD offre un moyen concret de briser les silos entre les développeurs, les équipes d'exploitation et les autres intervenants dans le processus de développement et de livraison de logiciels.

Les principes du CI/CD permettent de réduire les risques et l’incertitude, notamment dans les projets complexes qui doivent rester suffisamment flexibles pour s’adapter à des exigences fréquemment changeantes.

Les avantages de la mise en place d’un pipeline CI/CD

Certains avantages d’un pipeline CI/CD sont flagrants, comme l’automatisation intégrée qui réduit drastiquement les processus manuels sujets aux erreurs. Voici quelques autres bénéfices d’un pipeline CI/CD :

  • Proposer des opérations de déploiement avec un minimum de friction possible. Le pipeline CI/CD fournit aux opérateurs IT un processus relativement facile à utiliser et simplifié, ce qui diminue la complexité de la création et du déploiement d’applications. Ce processus simplifié est largement facilité par les fonctions d’automatisation intégrées au pipeline CI/CD.
  • Améliorer la rapidité des opérations. L’itération plus rapide des produits est notamment rendue possible grâce à l’automatisation et à des boucles de rétroaction plus courtes. L’automatisation fournit aux techniciens DevOps des informations immédiates sur la viabilité d’une version.

    Des intégrations CI plus petites et des déploiements CD plus réduits améliorent les indicateurs DevOps tels que le temps moyen de résolution (MTTR). Le MTTR mesure le temps moyen nécessaire pour corriger des fonctionnalités ou bugs défectueux, en incluant le diagnostic des problèmes sous-jacents. Le processus CI/CD global réduit le temps nécessaire pour diagnostiquer, tester, construire et déployer une application.
  • Augmenter la productivité : Le principe fondamental de l’intégration continue est d’inciter les développeurs à fusionner fréquemment leur code avec la branche principale de leur organisation. Cela augmente la probabilité que tous les membres de l’équipe DevOps disposent du dernier code fonctionnel.

    Ceci est crucial car travailler sur la dernière version de la base de code protège chacun contre le risque d’agir sur des hypothèses obsolètes à propos du projet, de ses fonctionnalités actuelles et de ses capacités. Cela accroît la productivité et la collaboration sur les projets logiciels. À terme, cela améliore la rapidité de commercialisation globale des produits d’une organisation.
  • Réduire la durée du cycle de release, et pouvoir livrer des logiciels à la demande. À l’ère du numérique, les entreprises doivent faire preuve d’agilité pour rester compétitives et réagir rapidement aux évolutions du marché. Les clients férus de technologie réclament de plus en plus des fonctionnalités avancées comme la personnalisation ou l’IA de pointe.

    Pour s’adapter à ces évolutions, les pipelines CI/CD aident non seulement les organisations à accélérer la livraison logicielle pour répondre aux attentes du marché, mais aussi à maintenir leurs actifs logiciels dans un état toujours prêt au déploiement.
  • Être capable de hiérarchiser les déploiements de fonctionnalités. En plus de faciliter la rapidité des opérations, l’infrastructure CI/CD permet aux ingénieurs IT de mettre en avant les fonctionnalités qui doivent être déployées immédiatement ou priorisées par rapport à d’autres.
  • Détecter plus rapidement les bugs et les corriger plus vite. Comme les changements de code sont intégrés plus fréquemment, la CI facilite la détection et la correction des bugs, erreurs et autres incompatibilités bien plus tôt dans le processus de développement logiciel. Ceci est particulièrement important pour les correctifs de bugs à déployer en priorité, notamment ceux qui corrigent les failles critiques dites zero-day.
  • Réduire les échecs et mieux gérer les risques. Le CI/CD met en place plusieurs couches de protections et de garde-fous tout au long du cycle de développement et des étapes de déploiement. L’effet cumulatif de ces dispositifs de sécurité diminue le risque auquel font face les équipes de développement pour produire du code viable.

    L’automatisation et les tests automatisés intégrés au pipeline CI/CD favorisent les tests continus, incluant les tests unitaires, les tests d’intégration, les tests de non-régression, etc. De plus, les systèmes CI/CD émettent diverses notifications durant les phases de build pour alerter les responsables IT et les ingénieurs si un incident survient.
  • Améliorer le contrôle qualité et limiter les risques d’erreur humaine. L’automatisation élimine le besoin d’intervention humaine, souvent source d’erreurs. La CI déclenche une nouvelle compilation à chaque fusion de code dans le référentiel principal. Ce processus s’accompagne généralement de tests unitaires et d’intégration afin de garantir la compatibilité du nouveau code avec le système. Cette procédure, quasiment sans friction, est une bonne pratique qui apporte un niveau de contrôle et d’assurance qualité.
  • Favoriser l’expérimentation et l’innovation. L’état d’esprit DevOps qui privilégie l’introduction de petites portions de code favorise l’innovation. Parce que ce processus fait peser un risque moindre, les équipes bénéficient d’une plus grande latitude pour expérimenter et innover. Cela encourage l’esprit startup à “avancer vite et casser des choses.”
  • Créer des releases fiables. Comme indiqué plus haut, mettre en production des lots fréquents mais de petite taille comporte moins de risques. L’empreinte de déploiement, plus limitée, est aussi plus simple à gérer, notamment pour savoir si un bug a été introduit dans le système. Dans bien des cas, il s’agit simplement d’identifier le dernier déploiement qui a déclenché le bug. 

Dernières réflexions

Key Takeaways

DevOps gravitationnel: L’intégration continue (CI) et la livraison continue (CD) forment le cœur du DevOps moderne, essentielles pour une livraison logicielle rapide, économique et avec peu de bogues.

Du chaos à l’ordre: Le passage d’introductions de modifications de code ad hoc et manuelles à des pipelines CI/CD standardisés et automatisés a révolutionné la fiabilité et la vitesse du développement logiciel.

Le chemin automatisé: Les pipelines CI/CD automatisent la livraison logicielle : des changements de code en petits lots et tests automatisés à l’assurance d’un produit prêt à être déployé, réduisant les erreurs et augmentant l’efficacité.

Les étapes du succès: Le pipeline CI/CD se compose d’étapes dont la source (déclenchement des modifications de code), la construction (compilation et préparation), le test (validation de la logique et des fonctionnalités), et le déploiement (mise en production dans les environnements).

Intégration et déploiement réunis: L’intégration continue (CI) et le déploiement continu (CD) offrent ensemble un cadre productif aux équipes DevOps, raccourcissant le cycle de la conception à la production logicielle.

Les pipelines CI/CD sont une fonctionnalité essentielle du développement logiciel moderne et permettent de produire des produits logiciels de haute qualité dans une industrie du logiciel en évolution rapide. 

Si vous souhaitez en savoir plus sur les avancées contemporaines et de pointe dans l'industrie technologique, abonnez-vous à la newsletter The QA Lead.