Pipeline CI/CD : apprendre avec l'exemple

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

Un pipeline CI/CD automatise le processus de livraison de logiciels. Il crรฉe du code, exรฉcute des tests et vous aide ร  dรฉployer en toute sรฉcuritรฉ une nouvelle version du logiciel. Le pipeline CI/CD rรฉduit les erreurs manuelles, fournit des commentaires aux dรฉveloppeurs et permet des itรฉrations rapides du produit.

Le pipeline CI/CD introduit l'automatisation et la surveillance continue tout au long du cycle de vie d'un produit logiciel. Cela va de la phase dโ€™intรฉgration et de test ร  la livraison et au dรฉploiement. Ces pratiques connectรฉes sont appelรฉes pipeline CI/CD.

Qu'est-ce que l'intรฉgration continue, la livraison continue et le dรฉploiement continu ?

  • Intรฉgration continue est une mรฉthode de dรฉveloppement logiciel oรน les membres de l'รฉquipe peuvent intรฉgrer leur travail au moins une fois par jour. Dans cette mรฉthode, chaque intรฉgration est vรฉrifiรฉe par une construction automatisรฉe pour rechercher l'erreur.
  • Livraison continue est une mรฉthode de gรฉnie logiciel dans laquelle une รฉquipe dรฉveloppe des produits logiciels dans un cycle court. Cela garantit que le logiciel peut รชtre facilement publiรฉ ร  tout moment.
  • Dรฉploiement continu est un processus d'ingรฉnierie logicielle dans lequel les fonctionnalitรฉs du produit sont fournies ร  l'aide d'un dรฉploiement automatique. Il aide les testeurs ร  valider si les modifications de la base de code sont correctes et si elles sont stables ou non.

ร‰tapes d'un pipeline CI/CD

Un pipeline CI/CD est une spรฉcification exรฉcutable des รฉtapes que tout dรฉveloppeur doit effectuer pour livrer une nouvelle version de n'importe quel logiciel. L'รฉchec de chaque รฉtape dรฉclenche une notification par e-mail, Slack, ou d'autres plateformes de communication. Il permet aux dรฉveloppeurs responsables de connaรฎtre les problรจmes importants.

Voici les รฉtapes importantes du pipeline CI/CD :

ร‰tapes du pipeline CI/CD
ร‰tapes du pipeline CI/CD

ร‰tape source

Au stade source, le pipeline CI/CD est dรฉclenchรฉ par un rรฉfรฉrentiel de code. Toute modification dans le programme dรฉclenche une notification ร  l'outil CI/CD qui exรฉcute un pipeline รฉquivalent. D'autres dรฉclencheurs courants incluent les flux de travail lancรฉs par l'utilisateur, les planifications automatisรฉes et les rรฉsultats d'autres pipelines.

ร‰tape de construction

Il s'agit de la deuxiรจme รฉtape du pipeline CI/CD dans laquelle vous fusionnez le code source et ses dรฉpendances. Il s'agit principalement de crรฉer une instance exรฉcutable de logiciel que vous pouvez potentiellement expรฉdier ร  l'utilisateur final.

Programmes รฉcrits dans des langages comme C++, Java, C ou Go doivent รชtre compilรฉs. D'autre part, Javascรฉnario, Python, et les programmes Ruby peuvent fonctionner sans รฉtape de construction.

Le fait de ne pas rรฉussir l'รฉtape de construction signifie qu'il y a une mauvaise configuration fondamentale du projet, il est donc prรฉfรฉrable que vous rรฉsolviez ce problรจme immรฉdiatement.

ร‰tape d'essai

L'รฉtape de test comprend l'exรฉcution de tests automatisรฉs pour valider l'exactitude du code et le comportement du logiciel. Cette รฉtape รฉvite que des bugs facilement reproductibles nโ€™atteignent les clients. Il est de la responsabilitรฉ des dรฉveloppeurs d'รฉcrire des tests automatisรฉs.

ร‰tape de dรฉploiement

Il s'agit de la derniรจre รฉtape de mise en ligne de votre produit. Une fois que la version a passรฉ avec succรจs tous les scรฉnarios de test requis, elle est prรชte ร  รชtre dรฉployรฉe sur le serveur live.

Exemple de pipeline CI/CD

Voici un exemple de pipeline CI/CD :

  • Contrรดle du code source : Hรฉbergez le code sur GitHub en tant que rรฉfรฉrentiel privรฉ. Cela vous aidera ร  intรฉgrer votre application aux principaux services et logiciels.
  • Intรฉgration continue: Utiliser une plateforme d'intรฉgration et de livraison continue CircleCI et validez chaque code. Lorsque les modifications sont notifiรฉes, cet outil rรฉcupรจre le code disponible dans GitHub et le traite pour crรฉer et exรฉcuter le test.
  • Dรฉployez le code sur l'UAT : Configurez CircleCI pour dรฉployer votre code sur le serveur AWS UAT.
  • Dรฉployer en production : Vous devez rรฉutiliser les รฉtapes d'intรฉgration continue pour dรฉployer du code sur UAT.

Meilleures pratiques du pipeline CI/CD

Voici les meilleures pratiques en matiรจre de pipeline CI/CD :

  • Rรฉdigez le processus de dรฉveloppement actuel afin que vous puissiez connaรฎtre les procรฉdures qui doivent รชtre modifiรฉes et celles qui peuvent รชtre facilement automatisรฉes.
  • Commencez par une petite preuve de projet avant de continuer et terminez l'ensemble du processus de dรฉveloppement en mรชme temps.
  • Configurez un pipeline comportant plusieurs รฉtapes dans lesquelles des tests fondamentaux rapides sont exรฉcutรฉs en premier.
  • Dรฉmarrez chaque flux de travail ร  partir du mรชme environnement propre et isolรฉ.
  • Exรฉcutez des outils open source qui couvrent tout, du style de code ร  l'analyse de sรฉcuritรฉ.
  • Configurez un meilleur hub de code pour vรฉrifier en permanence la qualitรฉ de votre code en exรฉcutant l'ensemble standard de tests sur chaque branche.
  • Le code par les pairs examine chaque demande d'extraction pour rรฉsoudre un problรจme de maniรจre collaborative.
  • Vous devez dรฉfinir des indicateurs de rรฉussite avant de commencer la transition vers l'automatisation des CD. Cela vous aidera ร  analyser systรฉmatiquement votre logiciel, ร  dรฉvelopper des progrรจs et ร  affiner si nรฉcessaire.

Avantages des pipelines CI/CD

Voici les avantages/avantages du pipeline CI/CD :

  • Les builds et les tests peuvent รชtre facilement effectuรฉs manuellement.
  • Cela peut amรฉliorer la cohรฉrence et la qualitรฉ du code.
  • Amรฉliore la flexibilitรฉ et a la capacitรฉ de fournir de nouvelles fonctionnalitรฉs.
  • Le pipeline CI/CD peut rationaliser la communication.
  • Il peut automatiser le processus de livraison de logiciels.
  • Vous aide ร  obtenir des commentaires clients plus rapides.
  • Le pipeline CI/CD vous aide ร  augmenter la visibilitรฉ de votre produit.
  • Il vous permet de supprimer les erreurs manuelles.
  • Rรฉduit les coรปts et la main dโ€™ล“uvre.
  • Les pipelines CI/CD peuvent accรฉlรฉrer le cycle de vie du dรฉveloppement logiciel.
  • Il dispose dโ€™un dรฉploiement automatisรฉ de pipelines.
  • Un pipeline CD offre une boucle de rรฉtroaction rapide allant du dรฉveloppeur au client.
  • Amรฉliore les communications entre les employรฉs de lโ€™organisation.
  • Il permet aux dรฉveloppeurs de savoir quels changements dans la construction peuvent se tourner vers le courtage et de les รฉviter ร  l'avenir.
  • Les tests automatisรฉs, ainsi que quelques exรฉcutions de tests manuels, aident ร  rรฉsoudre tous les problรจmes pouvant survenir.

Outils CI/CD importants

Voici les outils CI/CD importants :

1) Jenkins

Jenkins est un serveur d'intรฉgration continue open source qui permet de rรฉaliser le processus d'intรฉgration continue (et pas seulement) de maniรจre automatisรฉe. Jenkins est gratuit et est entiรจrement รฉcrit en Java. Jenkins est une application largement utilisรฉe dans le monde qui compte environ 300 installations et qui croรฎt de jour en jour.

Jenkins

Caractรฉristiques :

  • Jenkin construira et testera le code plusieurs fois au cours de la journรฉe.
  • Processus de construction et de test automatisรฉ, permettant de gagner du temps et de rรฉduire les dรฉfauts.
  • Le code est dรฉployรฉ aprรจs chaque build et test rรฉussi.
  • Le cycle de dรฉveloppement est rapide.

Lien : https://www.jenkins.io/download/


2) Bamboo

Bamboo est un serveur de build ร  intรฉgration continue qui effectue la construction, les tests et les versions automatiques en un seul endroit. Il fonctionne parfaitement avec le logiciel JIRA et Bitbucket.

Bamboo

Caractรฉristiques :

  • Exรฉcuter des tests par lots parallรจles
  • Mise en place Bamboo est assez simple
  • La fonctionnalitรฉ d'autorisations par environnement permet aux dรฉveloppeurs et au contrรดle qualitรฉ de dรฉployer dans leurs environnements
  • Branchements et workflows Git intรฉgrรฉs. Il fusionne automatiquement les branches.

Lien : https://www.atlassian.com/software/bamboo


3) CercleCi

CercleCi est un outil CI flexible qui s'exรฉcute dans n'importe quel environnement comme une application mobile multiplateforme, Python Serveur API ou cluster Docker. Cet outil rรฉduit les bugs et amรฉliore la qualitรฉ de l'application.

CercleCi

Caractรฉristiques :

  • Permet de sรฉlectionner l'environnement de construction
  • Prend en charge de nombreuses langues, notamment C++, JavaScript, NET, PHP, Python, et Rubis
  • La prise en charge de Docker vous permet de configurer un environnement personnalisรฉ.
  • Annulez automatiquement toutes les builds en file dโ€™attente ou en cours dโ€™exรฉcution lorsquโ€™une build plus rรฉcente est dรฉclenchรฉe.

Lien : https://circleci.com/

Pourquoi le pipeline CI/CD est-il important pour les responsables informatiques ?

  • Le pipeline CI/CD peut amรฉliorer la fiabilitรฉ.
  • Cela rend lโ€™รฉquipe informatique plus attrayante pour les dรฉveloppeurs.
  • Le pipeline CI/CD aide les responsables informatiques ร  extraire le code du contrรดle de version et ร  exรฉcuter la crรฉation de logiciels.
  • Aide ร  dรฉplacer le code vers lโ€™environnement informatique cible.
  • Permet aux chefs de projet de gรฉrer facilement les variables d'environnement et de les configurer pour l'environnement cible.
  • Les chefs de projet peuvent publier des composants d'application push sur des services tels que des services Web, des services de base de donnรฉes, des services API, etc.
  • Fournir des donnรฉes de journal et des alertes sur lโ€™รฉtat de livraison.
  • Il permet aux programmeurs de vรฉrifier les modifications du code avant qu'elles ne soient avancรฉes, rรฉduisant ainsi les risques que des dรฉfauts se retrouvent en production.

KPI du pipeline Ci/CD

  • Durรฉe du cycle ou du dรฉploiement : Le temps de cycle est le temps nรฉcessaire pour passer de la phase de construction ร  la production. Vous pouvez obtenir la durรฉe moyenne du cycle de vie en mesurant les phases du processus de dรฉveloppement. Cette mรฉtrique donnera un aperรงu des goulots dโ€™รฉtranglement de votre processus et de la vitesse globale du temps de dรฉveloppement.
  • Frรฉquence de dรฉveloppement : La frรฉquence de dรฉveloppement vous permet d'analyser les goulots d'รฉtranglement que vous rencontrez lors de l'automatisation. Les petites versions plus frรฉquentes rรฉduisent le risque de dรฉfauts et les corrigent une fois dรฉtectรฉes. Une telle mesure est une mesure globale de lโ€™efficacitรฉ de votre รฉquipe.
  • Modifier le dรฉlai de livraison : Il mesure lโ€™heure de dรฉbut de la phase de dรฉveloppement jusquโ€™au dรฉploiement. Cette mesure est un indicateur de lโ€™ensemble du processus de dรฉveloppement et de la qualitรฉ de la collaboration de lโ€™รฉquipe.
  • Changer le taux dโ€™รฉchec : Il se concentre sur le nombre de fois oรน le dรฉveloppement rรฉussit par rapport au nombre de fois oรน il รฉchoue.
  • MTTR contre MTTF : Le MTTR (Mean Time to Recovery) est le temps nรฉcessaire ร  votre รฉquipe pour se remettre d'un รฉchec. MTTF (Mean Time to Failure) mesure le temps รฉcoulรฉ entre les correctifs et les pannes. Ces mesures reflรจtent la capacitรฉ de l'รฉquipe ร  rรฉpondre et ร  rรฉsoudre les problรจmes.

Rรฉsumรฉ

  • Un pipeline CI/CD automatise le processus de livraison de logiciels.
  • Le pipeline CI/CD introduit l'automatisation et la surveillance continue tout au long du cycle de vie d'un produit logiciel.
  • L'intรฉgration continue est une mรฉthode de dรฉveloppement logiciel oรน les membres de l'รฉquipe peuvent intรฉgrer leur travail au moins une fois par jour.
  • La livraison continue est une mรฉthode d'ingรฉnierie logicielle dans laquelle une รฉquipe dรฉveloppe des produits logiciels dans un cycle court.
  • Le dรฉploiement continu est un processus d'ingรฉnierie logicielle dans lequel les fonctionnalitรฉs du produit sont fournies ร  l'aide d'un dรฉploiement automatique.
  • Il existe quatre รฉtapes dans un pipeline CI/CD : 1) ร‰tape source, 2) ร‰tape de construction, 3) ร‰tape de test, 4) ร‰tape de dรฉploiement.
  • Important Outils CI / CD sont Jenkins, Bambo et Circle CI.
  • Le pipeline CI/CD peut amรฉliorer la fiabilitรฉ.
  • Le pipeline CI/CD rend l'รฉquipe informatique plus attrayante pour les dรฉveloppeurs.
  • Le temps de cycle est le temps nรฉcessaire pour passer de la phase de construction ร  la production.
  • La frรฉquence de dรฉveloppement vous permet d'analyser les goulots d'รฉtranglement que vous rencontrez lors de l'automatisation.
  • Le dรฉlai de modification mesure lโ€™heure de dรฉbut de la phase de dรฉveloppement jusquโ€™au dรฉploiement.
  • Le taux d'รฉchec du changement se concentre sur le nombre de fois oรน le dรฉveloppement rรฉussit par rapport au nombre de fois oรน il รฉchoue.
  • Le MTTR (Mean Time to Recovery) est le temps nรฉcessaire ร  votre รฉquipe pour se remettre d'un รฉchec.
  • MTTF (Mean Time to Failure) mesure le temps รฉcoulรฉ entre les correctifs et les pannes.

Rรฉsumez cet article avec :