Publié par et
Il y a 5 années · 5 minutes · Agile, Java / JEE

Visuwall – Mixer vos outils de build et de qualité

Visuwall est un outil agrégeant et synthétisant les métriques fournies par Hudson, Jenkins, Bamboo, Teamcity et Sonar.

Pour faire simple, imaginez que sur un seul écran vous puissiez voir en un clin d’œil l’état de vos builds (succès/instabilité/échec), le nombre de tests unitaires et d’intégration agrémenté de métriques telles le nombre de lignes de code, la couverture de code et le respect des normes de codages.

Mieux qu’un long discours, nous vous proposons une courte vidéo de 3 minutes qui démontre la facilité avec laquelle vous pouvez démarrer facilement avec l’outil.

Si l’outil vous intéresse, il est disponible au téléchargement et le code source est à votre disposition sur github.

Si vous désirez en savoir plus sur le développement de ce projet, nous vous proposons une rétrospective de ces derniers mois, en partant de la genèse du projet jusqu’à son état actuel.

La genèse

Visuwall est un projet imaginé et développé par deux Xebians : Arnaud Lemaire et Julien Smadja. L’idée a germé en janvier 2011 à l’occasion d’une mission axée sur l’amélioration de la testabilité d’un projet Java. Sa première étape fut d’écrire plusieurs dizaines de tests d’acceptance afin de valider le bon fonctionnement d’un webservice REST.

Les tests échouaient souvent et pouvaient durer plusieurs heures suivant l’environnement ciblé. Nous voulions connaître l’état de chaque environnement immédiatement et surtout, rendre l’information visible aux personnes extérieures. Le premier réflexe a bien sûr été de récupérer une unité centrale, un écran et d’installer un plugin Hudson capable d’afficher un « mur » de projets.

Ensuite, nous avons commencé à tenter de l’adapter graphiquement : changer la taille des polices, des blocs, cacher les informations non pertinentes, en afficher d’autres, etc. Un premier fork du plugin a donc été fait sur Github mais le cycle de développement n’était pas optimal : difficulté à tester, redéploiement du plugin, vérifications manuelles, etc.

La customisation du plugin n’étant pas viable, nous décidons de créer notre propre logiciel, adapté à nos besoins et ouvert à plusieurs outils. Visuwall était né… Enfin, ce nom n’est pas d’origine, le nom de code était Jbiniou puis JWall, ProjectWall et enfin, un matin, il fut baptisé officiellement Visuwall, une simple contraction des termes Visual et Wall.

Visuwall sera développé en parallèle de notre projet chez notre client, dans un cadre open source (Apache Software License 2), hébergé sur Github et codé en Java.

Technologiquement parlant : une base de données embarquée HsqlDb, une couche de persistence JPA2/Hibernate 3, une couche service Spring3/Spring MVC et une interface graphique Html/Javascript utilisant jQuery.

Rapidement, le projet est découpé en plusieurs modules, le core, l’interface web et les plugins. Il était très important que Visuwall soit capable d’être étendu par des plugins que nous avions d’abord catégorisés en deux groupes: les plugins des outils de builds (Hudson, Jenkins) et les plugins des outils de qualité (Sonar). Comme l’écriture d’un plugin se doit d’être simple, le design d’une API publique a été amorcé. Il s’agit principalement de remplir au maximum le contrat imposé par le moteur de Visuwall. Par exemple, un plugin doit être capable de fournir la liste des projets, la durée de tel ou tel build, le nombre de tests, etc.

Après plusieurs mois de développement, dans des endroits insolites comme les Bus, Metro, Rer et autres salles d’attente, le projet a été présenté lors du XKE de Juin afin de recueillir les premiers avis de nos collègues Xebians et pourquoi pas, les inciter à installer cette version 0.1 chez leurs clients.

À la suite des premiers retours (bugs et améliorations) nous avons travaillé sur une refonte totale (notamment sur l’API des plugins).

Modularité

Au fur et à mesure du développement, nous nous apercevons que certaines parties de notre code constituent à elles seules des projets à part entière. Nous avons donc déplacé ces projets dans un repository Github séparé. Ainsi, la communauté pourra se servir facilement de ce qui a été commencé pour Visuwall et utilisable dans un autre contexte. C’est notamment le cas des parties clientes de Bamboo, TeamCity, Hudson, Jenkins, Sonar (projet nommé Clients), mais également la partie validation des formulaires d’où naquit une librairie de validation (Client Bean Validation) qui est une implémentation en Javascript de la JSR303 pour la validation coté client des objets du serveur.

Pour améliorer la modularité du projet nous travaillons actuellement sur une transformation des clients en bundle OSGI afin de pouvoir charger et décharger des plugins à la volée pendant que l’application tourne. Cette évolution nous permet à la fois de mieux appréhender le coté modularité de l’OSGI mais également d’apporter une plus grande flexibilité à l’application. À terme, l’ajout du moteur OSGI permettra de faire fonctionner toute l’application avec des modules customisables, remplaçables et extensibles.

L’aventure continue

Notre travail sur Visuwall ne fait que commencer, nous avons encore des anomalies à corriger et des fonctionnalités à implémenter. Nous espérons avoir un maximum de retours de la part de la communauté pour pouvoir proposer un logiciel de qualité et utilisable dans le cadre de tous vos projets.

Visuwall a été présenté à CITCON 2011 devant quelques personnes dont un représentant de JetBrains. Nous allons prochainement prendre contact avec lui pour discuter des différentes améliorations que nous souhaiterions dans l’API REST de Teamcity !

Julien Smadja
Julien Smadja est consultant manager chez Xebia où il intervient notamment sur des projets NodeJS et AngularJS 2. Ses 10 ans d'expérience ont principalement été axées sur le développement d'applications Java, la qualité et la testabilité.

4 réflexions au sujet de « Visuwall – Mixer vos outils de build et de qualité »

  1. Publié par Romain Schlick, Il y a 5 années

    Beau boulot les gars. On va peut-être l’utiliser chez mon client ;)

  2. Publié par Alexandre COLLIGNON, Il y a 5 années

    Une superbe idée qui me rappelle les écrans de supervisions des équipes d’administration système et réseau.

    Pour ma part, je m’orienterai plus vers un Extrem Feedback Device comme un karotz (petit frère du nabaztag) ou des lava lamps pilotées. Moins évolués mais plus fun à mon sens.

    Cependant votre solution est autrement plus puissante et donne vraiment envie. Merci d’avoir libéré le code et félicitations !

  3. Publié par Julien Smadja, Il y a 5 années

    Merci Alexandre pour vos encouragements.

    Je n’ai pas eu la chance de voir un karotz ou un nabaztag en action en entreprise. J’aimerais bien en savoir un peu plus à ce sujet qui peut sans doute être complémentaire à l’utilisation de Visuwall.

    Je trouve l’idée des lava lamps excellente, je ne connaissais pas non plus et ce doit être également très fun.

    L’idée derrière Visuwall c’est aussi que dans notre quotidien, nous n’avons pas forcément qu’un seul projet à « surveiller ». Ou alors, nous voulons surveiller les sous modules de ce projet, j’imagine mal une rangée de lava lamps :)

    Pour information, la version 0.4 de Visuwall permettra à l’utilisateur de composer avec une plus grande liberté les projets et les vues qu’il souhaite faire apparaître sur son wall.

    Bonne continuation et au plaisir de vous croiser.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *