PARTAGES.

Small studio with grand ideas making sure people get what their businesses really need.

BLOG

Se doter d’une chaine d’intégration continue robuste et modulaire, simplement et rapidement

Share on linkedin
Partager sur LinkedIn
Share on facebook
Partager sur Facebook
Share on twitter
Partager sur Twitter

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

L’intégration continue (CI pour Continuous Integration) est une pratique de développement dans laquelle les développeurs intègrent fréquemment du code dans un référentiel partagé, de préférence plusieurs fois par jour. Chaque intégration peut ensuite être vérifiée par un build automatisé et des tests eux aussi automatisés. Bien que les tests automatisés ne fassent pas strictement partie du CI, ils sont généralement implicites. 

L’un des principaux avantages d’une intégration régulière est que vous pouvez détecter les erreurs rapidement et les localiser plus facilement. Comme chaque changement introduit est généralement petit, l’identification du changement spécifique qui a introduit un défaut peut être effectuée rapidement. 

Ces dernières années, la CI est devenue une pratique exemplaire pour le développement de logiciels et est guidée par un ensemble de principes clés. Parmi eux figurent le contrôle des révisions, l’automatisation de la construction et les tests automatisés. 

De plus, le déploiement continu et la livraison continue se sont développés comme les meilleures pratiques pour garder votre application déployable à tout moment ou même pousser automatiquement votre base de code principale en production chaque fois que de nouvelles modifications y sont apportées. Cela permet à votre équipe de produire rapidement tout en gardant des normes de qualité élevées qui peuvent être vérifiées automatiquement 

Intégration continue et Agilité 

De nos jours, pour toute équipe de développement logiciel, se doter d’un environnement d’intégration continue n’est plus considéré comme un luxe. L’intégration continue est un « must have », dont on ne peut se passer, surtout dans un contexte Agile SCRUM. 

L’agilité se base sur le principe inspect/adapt. Ce principe tire toute sa puissance de la performance de la boucle de « feedback ». Il s’agit ici du fait de raccourcir cette boucle de feedback. Plus le feedback est rapide pour l’inspection du résultat, plus l’action d’adaptation sera rapide.  

En effet, dans le développement de logiciels s’il y a quelque chose qui vous ralentit vraiment, c’est le manque de retour sur la qualité et l’impact des modifications que vous apportez. Vous pourriez penser que vous avancez rapidement si vous validez rapidement le code et passez à une autre tâche sans exécuter de tests ou de vérifications d’intégrité. Pourtant, vous serez confrontés par la dure réalité, plus tard, lorsque vous essayerez de déterminer quel changement et à partir de quand (et par qui…) quelque chose a été cassé.  

Les outils d’intégration continue, lorsqu’ils sont correctement utilisés, supprimeront une grande partie de ce casse-tête en vous fournissant des réponses rapides à la question « ai-je cassé quelque chose ? » et ce pour chaque commit. 

Lorsque votre intégration continue est configurée, toute votre équipe saura ce qui se passe avec les builds et obtiendra les derniers résultats des tests, ce qui signifie qu’elle peut soulever des problèmes et planifier son travail en contexte.  

Raccourcir la boucle de feedback permet aussi de corriger les problèmes le plus tôt possible. Cela permet de minimiser les incidents en production et de maitriser les coûts de tout projet. Détecter un bug trop tard (en production) implique des coûts beaucoup plus élevés (en temps et en impact) que de le détecter en intégration en phase de développement. 

L’intégration continue est idéale pour éviter ce genre de problème. 

Quels sont les critères de choix d’un outil CI ? 

Quand il s’agit de mettre en place une chaine d’intégration continue plusieurs critères sont à satisfaire, voici quelques-uns des plus importants : 

  • Utiliser des outils standards, connus et bien supportés. Si votre objectif premier est d’améliorer la qualité de vos développements, alors vous avez tout à gagner à vous appuyer sur un outil validé par un nombre d’utilisateurs importants. 
  • Réduire la complexité. La logique même du CI est de réduire la complexité, donc les outils supports doivent aller dans ce sens. 
  • Modularité et scalabilité. Choisissez un outil qui saura s’adapter à la taille de vos projets et à celle de vos équipes. 
  • Maitrise des coûts. Deux axes sont ici à contrôler, d’un côté que la mise en place soit rapide et de l’autre, qui la maintenance soit maitrisée. 

L’intégration continue selon notre Centre de Services 

Notre choix c’est porté sur l’outil développé par JetBrains, à savoir Teamcity, qui est un outil central d’intégration continue. 

Teamcity de JetBrains, une solution de CI/CD à usage général qui permet la plus grande flexibilité pour toutes sortes de workflows et de pratiques de développement. 

Teamcity est un outil très puissant et complet, répondant avec aisance aux besoins de la mise en place de l’intégration continue. 

Nous pouvons citer ici les principales intégrations qu’offre Teamcity : 

JetBrains propose trois types de mise en place : 

En version gratuite, même pour un usage commercial, la formule Teamcity Professionnal est idéale pour une maîtrise parfaite de son système d’intégration avec des coûts maitrisés. 

Pour information, nous utilisons aussi d’autres outils et solutions : 

  • Octopus Deploy : Un outil d’automatisation basé sur le cloud ou sur site pour DevOps. Les utilisateurs peuvent gérer et automatiser les versions, les déploiements sur plusieurs infrastructures avec de multiples stratégies. 
  • DockerHub : Qui servira comme repository public ou privé des images docker. 
  • Nginx : Qui jouera le rôle de reverse proxy. Il sera couplé avec une gestion des certification SSL par Letsencrypt et Certbot 

Notre Centre de Services a opté pour une architecture entièrement dockerisée. De ce fait toute la plateforme peut être montée et peu tenir sur un seul et unique Docker-compose. Enfin, d’autres outils peuvent venir enrichir la chaine d’intégration comme, par exemple, SonarQube ou Logstash…  

Ci-dessous le schéma d’architecture pour la mise en place d’une chaine d’intégration continue 

Une image contenant texte, équipement électronique, plusieurs

Description générée automatiquement

Social media

Rester en contact

Newsletter

Imagine if your manager could know whether you actually

Catégories

Catégories

Newsletter

Donec elementum dui semper, pretium dui quis, pretium nisl.