Blog Jalios Community

JADE - Plate forme d'intégration continue JCMS

1. Les fondamentaux de l’intégration continue

Intégration continue, aussi connu sous l'abréviation CI (Continuous Integration), est une pierre angulaire du développement logiciel moderne. C'est un catalyseur de changement dans une organisation car la méthode modifie radicalement la façon dont les équipes pensent le processus de développement. C’est une série de processus incrémental d’améliorations, allant de la simple automatisation prévue de construction de livrable jusqu'à la livraison continue en production.

Une bonne infrastructure d’intégration continue permet de :

  • rationaliser le processus de développement à travers le déploiement
  • déceler et corriger les bugs plus rapidement
  • de fournir un tableau de bord des projets utiles pour les développeurs et les non-développeurs,
  • et finalement, aider les équipes à offrir une valeur commerciale plus réelle pour l'utilisateur final.

Chaque équipe de développement professionnel, peu importe leur taille, pratique aujourd’hui systématiquement l’intégration continue.

A l’époque des projets en cascade (cycle V) avec des diagrammes de Gantt, avant l'introduction de CI, le temps et l'énergie de l'équipe de développement ont été régulièrement consommé dans la période menant à une version par ce qu'on a appelé la phase d'intégration. Durant cette phase, les modifications de code apportées par les développeurs individuels ou de petites équipes ont été regroupées en fragment et forgées en un logiciel. Ce travail était dur et impliquait parfois l'intégration des mois de changements en conflit. Il était très difficile d'anticiper les types de questions qui pourraient surgir, et encore plus difficile de les corriger car la réponse à ces questions pouvait impliquer un remaniement code qui avait été écrit des semaines ou des mois avant. Ce processus douloureux, lourd de risque et de danger, entraînait souvent des retards importants de livraison, les coûts imprévus et, par conséquent des clients mécontents. L’intégration continue est née pour répondre à ces questions.

Dans sa forme la plus simple, l'intégration continue consiste à un outil qui surveille le gestionnaire de version (Clearcase, CVS, SVN, Git, …). Chaque fois qu'un changement est détecté, l’outil compile automatiquement et teste votre application via les tests unitaires et/ou fonctionnels. Si quelque chose va mal, l'outil notifie immédiatement aux développeurs afin qu'ils puissent résoudre le problème dans le plus bref délai.

Mais l'intégration continue peut faire beaucoup plus que cela. Elle peut également vous aider à :

  • garder un œil sur la santé de votre base de code
  • suivre automatiquement la qualité du code et les métriques de couverture
  • contribue à maintenir une dette technique vers le bas et des coûts d'entretien faibles

Les mesures de qualité de code publiquement visibles peuvent également encourager les développeurs à être fiers de la qualité de leur code et s'efforcent de l'améliorer. En combinant avec des tests d'acceptation automatisés, l’intégration continue peut également agir comme un outil de communication. Elle publie une image claire de l'état actuel des efforts de développement.

 

2. Ce qu’il faut retenir

jade-illustration-1

Ce qui ne se mesure pas, ne se pilote pas,

sans mesure, tout n’est qu’opinion

L'intégration continue a pour l’objectif d’offrir de la valeur à l'utilisateur final plus rapidement. Nous pouvons oser et tenter répondre à ces questions :

  • Combien de temps prend le déploiement en production d'un changement d'une seule ligne de code ?
  • A travers l’intégration continue, combien de problèmes auraient-ils pu être fixés plus tôt, si j’avais su sur les modifications de code que JS Ninja faisait dans le couloir ?
  • Combien de temps aurais-je pu épargner à l’équipe QA via des “task force” de tests manuels et répétitifs à chaque livrable ?
  • Combien de temps prend chaque étape de déploiement manuel connues que de quelques privilégiés ?

L’intégration continue n'est pas non plus une solution magique. Ce qui est certain c’est qu’elle peut aider à rationaliser un bon nombre de problème. Mais l'intégration continue est un état d'esprit autant qu'un ensemble d'outils. Pour tirer le meilleur parti de l’intégration continue, votre équipe a besoin d'adopter une mentalité l’intégration continue. Par exemple, vos projets doivent avoir un processus de construction fiable, reproductible et automatisée, n'impliquant aucune intervention humaine. La correction des “builds” cassés doit prendre une priorité absolue, et ne pas être laissée à l’abandon. Le processus de déploiement doit être automatisé, sans étapes manuelles. Et comme la confiance que vous placez dans votre serveur d’intégration continue dépend la qualité de vos tests, votre équipe a besoin d’investir du temps dans des tests de haute qualité.

 

3. Jalios rend accessible l’intégration continue avec JCMS

A Jalios, nous pratiquons l’intégration continue depuis plusieurs années et nous souhaitons partager cette démarche de qualité avec ceux qui utilisent JCMS.

L’intégration continue, comme présentée ci-dessus, est une approche gagnante mais le coût de sa mise en place pourrait être un frein au niveau des décideurs.

Dans cet état d’esprit, nous avons investi dans l’élaboration d’une plate forme clé en main nommée JADE (JAlios Delivery Engine).

JADE est un environnement complet d’intégration continue pour Jalios JCMS. Cette plate-forme intègre tous les composants nécessaires pour :

  • Produire automatiquement des livrables avec l’intelligence de construction assurée par Jalios
  • Mesurer automatiquement la qualité de développement et en continu
  • Superviser et détecter les problèmes le plus rapidement possible
  • Centraliser des informations communes

jade-illustration-3

Tableau de bord d'un projet JCMS

 

jade-illustration-4

Historique de construction d'un module JCMS

 

jade-illustration-5

Tendance des résultats de tests

 

JADE est livrée sous forme de machine virtuelle au format .ova (Open Virtual Appliance Format). Elle fonctionne au sein d’un serveur VMware ESX. Il est également possible d'évaluer JADE en local en ayant seulement VMware Player qui est gratuit. Pour permettre de démarrer rapidement une plateforme d'intégration continue pour des projets JCMS, JADE contient principalement les composants suivants qui sont pré-installés :

  • Jenkins : serveur d'intégration continue. Jenkins est la solution open-source standard defacto pour l’intégration continue
  • SVN : serveur de gestion de version
  • les scripts de construction de JCMS pré-paramétrés pour produire des modules (.zip) et les applications (.war)

Lorsque la machine virtuelle démarre, JADE est prête à utiliser.

4. Pour plus d’informations

Pour comprendre l’implémentation de JADE, veuillez consulter la documentation de JADE. Si vous souhaitez un accompagnement pour appliquer JADE sur vos projets, n'hésitez pas à nous contacter. Nous étudierons votre contexte de projet et vous proposerons les accompagnements adéquats. Normalement, une durée de 2 à 3 jours est suffisante.

5. Références

  • Les Géants du Web - Octo Technology - 11/2012
  • Jenkins - The Definitive Guide - J. Smart (O'Reilly, 2011) 
  • Continuous Delivery (Addison-Wesley, 08/2010)