Sur une idée de Guillaume Carré de Xebia, j’ai testé Hudson. Il s’agit d’un serveur d’intégration continue basé sur un moteur d’exécution d’activités répétées et de surveillance de tâches. Vous pouvez donc vous en servir comme un CruiseControl pour effectuer de l’intégration continue… mais pas seulement !
Chez nous ce n’est pas une fermette, mais vraiment des fermes de serveur avec des serveurs CruiseControl élevés en batterie qui compilent, intègrent et déploient chaque nuit nos applications. En majorité pour des projets Java, il y a des intégrations réussies de C/C++.
Le souci je crois, c’est que nos poulets bios sont plutôt devenus des poulets industriels élevés en batterie… CruiseControl c’est bien si vous apprenez à vous en servir et si vous faîtes l’effort de le nettoyer de temps en temps… Or je me rends compte que, faute d’une interface de configuration simple, les développeurs tendent à laisser tourner CruiseControl comme un hamster dans sa roue.
Hudson en premier séduit par son interface Web d’administration et de gestion. En quelques cliques de souris vous pouvez préparer votre projet et lancer vos premières compilations… La classe.
Pour lancer Hudson via Java Web Start cliquez-ici puis une fois l’installation effectuée, regardez sur http://localhost:8080.
Ensuite notre machine à élever le bon grain est assez bien architecturée car j’ai vu que le système pouvait fonctionner en effectuant des builds parrallèles. CruiseControl est synchrone et n’effectue qu’une seule build à la fois. Souvenez-vous de TeamCity, le produit de JetBrains, qui faisait cela très bien, sous la condition de dépenser quelques dollars (il existe une version gratuite, allez vérifier sur le site de JetBrains).
Hudson est capable par exemple d’effectuer un job de vérification régulièrement et de vous donner un état. Première application pour nous : vérifier que nos urls de démonstrations sont actives et fonctionnent avant que ce ne soit les gens de l’équipe qualité qui s’en rendent compte.
Du côté de l’intégration continue, Hudson peut surveiller votre repository et s’activer lorsqu’un utilisateur effectue un commit (classique). Il peut ensuite sauvegarder les artefacts générés. Et la fonction la plus intéressante que je n’ai pas testée : la possibilité de rappeler une build. C’est un système très pratique qui permet de relancer une build de release pour les clients qui souhaitent une version un peu ancienne de votre produit. Pour notre part, nous ne faisons pas que de la compilation. Chaque nuit nous effectuons la publication sur notre repository d’une snapshot afin que nos clients puissent intégrer en continu sans attendre une release. Bien entendu il y a des releases officielles, mais nous effectuons celles-ci manuellement avec Maven.
Voici par exemple le tableau de bord de JBoss pour vous donner une idée en live de ce que cela peut donner :
https://hudson.jboss.org/hudson/
Bref je pense qu’il sera intéressant de généraliser Hudson, au moins pour les nouveaux projets, car l’administration est vraiment plus simple.
Merci à Guillaume.
A tester donc chez vous avec vos poulets.