L’intégration continue

L’intégration continue est un ensemble de pratiques d’ingénierie logicielle consistant à vérifier à chaque modification de code source et que le résultat des modifications ne produit pas de régression dans l’application développée. Le but de cette pratique est de détecter les problèmes d’intégration au plus tôt lors du développement. De plus, elle permet d’automatiser l’exécution des suites de tests et de voir l’évolution du développement du logiciel.

Cette pratique est de plus en plus utilisée afin d’améliorer la qualité du code et du produit final.

Le fonctionnement de l’intégration continue

Le code est, d’abord, construit sur un repo partagé accessible à toute l’équipe de développeurs. Le serveur CI automatisé exécute des tests unitaires, en s’assurant que les modifications apportées par les développeurs ne créent pas une régression dans l’application. S’il existe un problème au niveau du code, le serveur affiche où le test a échoué, afin que les développeurs puissent immédiatement réparer.

Les développeurs n’ont pas besoin de vérifier manuellement où la régression s’est produit, ceci est géré par le serveur CI automatisé, ce qui permet de gagner du temps qui aurait été consacré au débogage.

Les principes et pratiques de l’intégration continue 

Pour une pratique efficace de l’intégration continue, les équipes logicielles devraient adhérer à la structure suivante :

  • Dépôt partagé – Les membres de l’équipe doivent conserver un seul référentiel pour le projet. Tous les développeurs impliqués doivent avoir accès aux derniers résultats et voir tous les changements effectués par n’importe quel membre de l’équipe. Pour cela, il faut implémenter un contrôle de version de votre choix comme Git. Cela implique qu’il devrait y avoir une stratégie de branchement solide, et des branches pour les correctifs.
  • Intégration quotidienne – Les développeurs devront procéder quotidiennement à des intégrations.
  • Compilation automatique – Une compilation implique tous les facteurs nécessaires à l’exécution réussie d’un programme. Cela implique un moyen automatisé de s’assurer que les builds défectueuses sont réparés immédiatement.
  • Test automatique – Il doit y avoir des tests automatisés pour s’assurer que l’intégration du code est réussie lorsqu’il est corrigé.
  • Déploiement automatique.

Les avantages de l’intégration continue

  • Logiciel de haute qualité résultant de la correction immédiate des bogues.
  • Livraison rapide des logiciels, car les bogues sont détectés tôt et corrigés.
  • L’automatisation réduit les problèmes avec le produit
  • Communication efficace et améliorée entre les membres de l’équipe
  • Plus de flexibilité grâce à une intégration courte

La livraison continue

La livraison continue est une pratique en génie logiciel où le logiciel peut être déployé en production à tout moment. Elle dépend fortement de l’intégration continue et ne doit pas être confondue avec le déploiement continu.

Les principes et pratiques de la livraison continue

  • Le CD est fortement dépendant du CI, il doit donc y avoir une intégration continue mise en place.
  • Il devrait y avoir une collaboration entre l’équipe de développement et les opérations (DevOps)
  • Le processus de déploiement et l’acceptation des tests doivent être automatisés.
  • Il doit y avoir un pipeline de livraison. Le déploiement doit être testé et cela peut être réalisé par la configuration d’un serveur de déploiement et l’exécution de tests.
  • La livraison du logiciel doit être à la demande.

Les avantages de la livraison continue

  • Livraison rapide car elle nécessite moins d’efforts
  • Fiabilité dans la mise en circulation du produit
  • Les entreprises ont un contrôle absolu sur les builds
  • Boucle de rétroaction rapide
  • Logiciels de meilleure qualité

Un bref aperçu de certains outils CI et CD

Il y a une collection d’outils parmi lesquels vous pouvez choisir, qui peuvent vous aider avec CI et CD. Il existe des outils open source et des outils propriétaires, des outils hébergés et des outils en nuage. Nous n’examinerons que quelques-uns de ces outils.

Jenkins – est le premier serveur d’automatisation open source. Ecrit en Java, il peut être utilisé comme un simple serveur CI et CD. Il dispose d’une liste complète de plugins, libre d’utilisation et multiplateforme.

Teamcity – est un serveur de CI et de CD d’entreprise de JetBrains. Il offre des fonctionnalités gratuites allant jusqu’à 100 configurations de compilation et 3 agents de compilation.

Travis-CI – Pour chaque projet open source sur GitHub, synchronisé avec Travis CI, vous pouvez toujours tester votre code en quelques minutes, gratuitement. Certaines de ses fonctionnalités incluent des vues de construction en temps réel, le support des requêtes d’extraction, des déploiements automatiques sur les builds.

Bamboo – est un logiciel propriétaire d’Atlassian, propriétaire de Jira et Bitbucket. Bamboo aide les équipes à gérer la livraison continue du code au déploiement. Il automatise les builds, les tests et les versions en un seul flux de travail.

GitLab CI et CD – Un outil propriétaire CI et CD de GitLab, aidant les équipes à construire, tester, déployer et surveiller le code. Certaines de ses caractéristiques incluent une plate-forme transversale, des pipelines flexibles, un support de docker, une mise à l’échelle automatique. Il est open source en tant que partie intégrante de GitLab Community Edition et de la version propriétaire GitLab Enterprise Edition.