Qu’est-ce que le CI/CD ? Intégration continue et livraison continue

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

Intégration continue est une méthode de développement logiciel où les membres de l'équipe intègrent 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 détecter les erreurs. Ce concept a été introduit pour la première fois il y a plus de vingt ans pour éviter « l’enfer de l’intégration », qui survient lorsque l’intégration est reportée à la fin d’un projet.

En intégration continue, après une validation de code, le logiciel est construit et testé immédiatement. Dans un grand projet avec de nombreux développeurs, les commits sont effectués plusieurs fois au cours d'une journée. Avec chaque commit, le code est construit et testé. Si le test est réussi, la build est testée pour le déploiement. Si le déploiement réussit, le code est poussé vers la production. Cette validation, cette construction, ce test et ce déploiement sont un processus continu, d'où le nom d'intégration/déploiement continu.

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

Livraison continu 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. L’objectif principal de la livraison continue est de créer, tester et publier des logiciels avec une bonne rapidité et fréquence. Il vous aide à réduire les coûts, les délais et les risques liés à la mise en œuvre des modifications en permettant des mises à jour fréquentes en production.

Quelle est la différence entre CI et CD ?

CI contre CD: L'intégration continue (CI) est une approche permettant de tester automatiquement chaque modification de la base de code, tandis que la livraison continue (CD) est une approche permettant d'obtenir des modifications de nouvelles fonctionnalités, de configuration et de corrections de bogues.

Développement sans CI vs Développement avec CI

Voici les principales différences entre le développement avec ou sans CI :

Développement sans CI Développement avec CI
Beaucoup de bogues Moins de bugs
Commis peu fréquents Engagements réguliers
Sorties peu fréquentes et lentes Sorties de travail régulières
Une intégration difficile Intégration facile et efficace
Les tests ont lieu tardivement Les tests d'intégration continue ont lieu tôt et souvent.
Les problèmes soulevés sont plus difficiles à résoudre Recherchez et résolvez les problèmes plus rapidement et plus efficacement.
Mauvaise visibilité du projet Meilleure visibilité du projet

Différence entre compilation et intégration continue

Activités en Intégration Continue
Activités en Intégration Continue

Bien que la compilation compile uniquement un code, CI effectue les activités suivantes

Intégration de base de données

  • Assurez-vous que la base de données et le code sont synchronisés
  • Création automatisée de bases de données et de données de test.

Inspection des codes

  • Garantit une base de code saine
  • Identifie les problèmes dès le début et applique les meilleures pratiques

Déploiement automatisé

  • Vous permet de publier le produit à tout moment
  • État continuellement démontable et fonctionne sur n'importe quelle machine

Génération de documents

  • S'assurer que la documentation est à jour
  • Supprime les gravures du développeur
  • Produit des rapports de build et des métriques

Compilation

La compilation est le processus suivi par l'ordinateur pour convertir un code de langage de programmation de haut niveau en un langage machine que l'ordinateur est capable de comprendre. Il garantit un compilateur de code sur chaque plateforme cible.

Quand dois-je construire ?

  • À chaque enregistrement
  • Chaque fois qu'une dépendance change

Quelles sont les étapes de l’intégration continue ?

Processus CI
Processus CI
  • Idéalement, la construction devrait provenir de la ligne de commande et ne devrait pas dépendre d'un environnement de développement intégré (IDE).
  • La construction doit s'effectuer en continu à l'aide d'un serveur Cl dédié, et non d'une tâche cron.
  • Le CI construit doit être déclenché à chaque enregistrement et pas seulement à minuit
  • La version doit fournir un retour immédiat et ne nécessiter aucun effort de développement
  • Identifiez les indicateurs clés et suivez-les visuellement. Plus important encore, agissez immédiatement

De quoi avez-vous besoin pour mener le processus CI ?

Mener le processus CI

Voici les éléments clés dont vous avez besoin pour effectuer l’ensemble du processus CI :

  • Système de contrôle de version (VCS) : Il offre une méthode fiable pour centraliser et conserver les modifications apportées à votre projet au fil du temps.
  • Machine virtuelle: Vous devriez avoir un serveur de rechange ou au moins un machine virtuelle pour construire votre système.
  • Solutions d'outils CI hébergés : Pour éviter les serveurs ou les machines virtuelles, vous devriez opter pour des solutions d'outils CI hébergés. Cet outil aide à la maintenance de l’ensemble du processus et offre une évolutivité plus facile.
  • Outils: Si vous sélectionnez une variante auto-hébergée, vous devrez installer l'un des nombreux Outils CI comme Jenkins, TeamCity, Bamboo, GitLab, etc.

Comment fonctionne l'intégration continue ?

Vous connaissez sûrement l'ancien téléphone Nokia. Nokia avait l'habitude de mettre en œuvre une procédure appelée nightly build. Après plusieurs engagements de divers développeurs au cours de la journée, le logiciel a été construit chaque nuit. Étant donné que le logiciel n'est construit qu'une fois par jour, il est extrêmement pénible d'isoler, d'identifier et de corriger les erreurs dans une base de code volumineuse.

Later, ils ont adopté l’approche d’Intégration Continue. Le logiciel a été construit et testé dès qu'un développeur a validé le code. Si une erreur est détectée, le développeur concerné peut rapidement corriger le défaut.

Exemple d'intégration continue
Exemple d'intégration continue

Caractéristiques de CI

Voici les fonctionnalités et avantages importants de l’intégration continue :

  • Vous permet de maintenir un seul référentiel source
  • Vous pouvez tester le clone de l'environnement CI de production
  • L'environnement bâti doit être proche de l'environnement de production.
  • L'un des avantages de l'intégration continue est la disponibilité constante d'une version actuelle.
  • Le processus complet de construction, de test et de déploiement doit être visible par tous les détenteurs de la pile.

Pourquoi utiliser CI ?

Voici des raisons importantes d’utiliser l’intégration continue :

  • Vous aide à créer des logiciels de meilleure qualité
  • Le processus CI permet d'augmenter les effectifs et les résultats des équipes d'ingénierie.
  • CI permet aux développeurs de logiciels de travailler indépendamment sur des fonctionnalités en parallèle.
  • Vous aide à effectuer des tests reproductibles
  • Augmenter la visibilité permettant une meilleure communication
  • Aide à développer un produit potentiellement livrable pour une construction entièrement automatisée
  • Vous aide à réduire les risques en rendant le déploiement plus rapide et plus prévisible
  • retour immédiat dès que le problème arrive
  • Évitez toute confusion de dernière minute concernant la date et le calendrier de sortie

Meilleures pratiques d'utilisation des systèmes CI

Voici quelques bonnes pratiques importantes lors de la mise en œuvre

  • S'engager tôt et s'engager souvent, ne jamais engager de code brisé
  • Corrigez immédiatement les échecs de construction
  • Agir sur les métriques
  • Intégrer chaque environnement cible Créer des artefacts à partir de chaque build
  • La construction du logiciel doit être effectuée de manière à pouvoir être automatisée
  • Ne dépendez pas d'un IDE
  • Construisez et testez tout quand cela change
  • Le schéma de la base de données compte pour tout
  • Vous aide à découvrir les indicateurs clés et à les suivre visuellement
  • Enregistrez-vous souvent et tôt
  • Contrôle plus fort du code source
  • L'intégration continue consiste à exécuter des tests unitaires chaque fois que vous validez du code
  • Automatisez la construction et testez tout le monde
  • Gardez la construction rapide grâce au déploiement automatisé

Inconvénients de l'IC

Voici les inconvénients/inconvénients du processus d’intégration continue :

  • Un temps de configuration initiale et une formation sont nécessaires pour se familiariser avec le serveur Cl.
  • Le développement de procédures de test adaptées est essentiel
  • Une suite de tests bien développée nécessitait de nombreuses ressources pour le serveur Cl
  • Conversion de processus familiers
  • Nécessite des serveurs et des environnements supplémentaires
  • Des temps d'attente peuvent survenir lorsque plusieurs développeurs souhaitent intégrer leur code à peu près en même temps

Outils pour le processus CI

Voici quelques outils CI/CD les plus essentiels :

Jenkins

Jenkins

Jenkins est un logiciel d'intégration continue open source. Il est écrit en utilisant le Java langage de programmation. Il facilite les tests en temps réel et la création de rapports sur des modifications isolées dans une base de code plus volumineuse. Ce logiciel aide les développeurs à trouver et à résoudre rapidement les défauts de leur base de code et à automatiser les tests de leurs builds.

Bamboo

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 prend en charge de nombreux langages et technologies tels que CodeDeply, Docker, Git, SVN, Mercurial, AWS et Amazon Godets S3.

TeamCity

TeamCity

TeamCity est un serveur d'intégration continue qui prend en charge de nombreuses fonctionnalités puissantes. Il maintient un serveur CI sain et stable même lorsqu'aucune build n'est en cours d'exécution. Il offre une meilleure qualité de code pour tout projet

Résumé

  • Définition de l'intégration continue : 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.
  • CI/CD signifie combinaison d'intégration continue et de livraison continue ou de déploiement continu.
  • Le développement sans CI crée beaucoup de bugs alors que le développement avec CI offre moins de bugs
  • Les activités importantes de l'intégration continue sont 1) l'intégration de la base de données, 2) l'inspection du code, 3) le déploiement automatisé, la génération de documents et la compilation.
  • La construction doit s'effectuer en continu à l'aide d'un serveur Cl dédié, et non d'une tâche cron.
  • Les éléments importants de CI sont 1) Système de contrôle de version 2) Machine virtuelle 3) Solutions d'outils CI hôtes 4) Outils
  • Le système d'intégration continue vous permet de maintenir un seul référentiel source
  • Le processus CI/CD vous aide à créer des logiciels de meilleure qualité
  • Les meilleures pratiques les plus importantes de Azure Le processus d'intégration continue consiste à s'engager tôt et à s'engager souvent sans jamais commettre de code brisé
  • L'inconvénient majeur du Pipeline CI / CD le processus est qu'une suite de tests bien développée nécessitait de nombreuses ressources pour le serveur Cl
  • Jenkins, Bambook et Team City sont des outils AWS continus utiles Outils d'intégration.