28 mai 2009

Continuum vs Bamboo vs Hudson

Petit retour d'expérience sur les serveurs d'intégration continue.

J'utilise beaucoup Hudson, qui a le vent en poupe. Interface ultra-conviviale, nombreux plugin et communauté très active. Les builds Maven2 sont découpés en modules automatiquement détectés, ce qui permet de consulter l'état d'un module en particulier. Par contre, le build reste monolithique, c'est à dire qu'Hudson fait un build complet même si un seul module est impacté.

Bamboo est le seul non-opensource de mon test. J'en avais entendu beaucoup de bien, je reviens plutôt déçu. L'interface est très correcte mais l'intégration de Maven est minimale : aucune gestion des modules, ni au build, ni à l'affichage. Par ailleurs, j'ai eu un peu de mal à m'y retrouver dans les onglets, mais c'est sans doute une question d'habitude.

Continuum est le plus moche des trois. L'IHM est vraiment old school et mériterait une belle refonte à grand coup d'Ajax et de styles graphiques plus modernes. Par contre, le support de Maven est sans compromis : chaque module d'un multi-projet est identifié comme tel et géré comme tel. Si une modification impacte un sous-module, celui-ci (et seulement celui-ci) est construit, puis Continuum enchaîne les modules ou autres projets qui en dépendent - ce qu'on attend d'une gestion des dépendances Maven !

Ma conclusion : Hudson est un bon environnement, surtout pour commencer avec l'intégration continue car il est très intuitif. Bamboo n'apporte pas de plus value fondamentale et son support Maven est décevant. Continuum est probablement le meilleur serveur d'intégration continue pour un projet Maven, mais également le moins esthétique et le plus complexe des trois à configurer. Le jour où il sort avec une IHM revisitée et une configuration en trois clics, il risque de déchirer -mais ce n'est qu'une conjecture, encore faut-il trouver les développeurs pour faire le boulot :)


8 commentaires:

Emmanuel a dit…

Excellente analyse.
Pour l'aspect graphique de Continuum, nous n'attendons que ton aide ;-)

nicolas deloof a dit…

dès que je trouve quelques jours de libre (c'est pas gagné) je m'y attaque...

Mickael BARON a dit…

Sinon, il y a peut être plus simple en espérant qu'Hudson gère plus finement le multi-modules.

nicolas deloof a dit…

Ca a déjà été demandé maintes fois, mais soit c'est pas si simple que ça en a l'air, soit les Hudsoneurs (ou Hudsonistes?) n'utilisent pas beaucoup Maven.

L'idéal serait qu'un petit gars de Continuum se penche sur le code d'Hudson ;)

Emmanuel a dit…

jamais de la vie :-P

olamy a dit…

pas plus de commentaires sur ton dernier point :-) (mais j'avoue y avoir pensé).
Mais c'est vrai que les plugins dans hudson c'est quand même quelque chose (en écrire faut aimer faire du jelly tiens celà me rappelle maven1 :-)).
Tu n'as ka voir : g beaucoup participé à continuum et maintenant j'utilise beaucoup hudson (bon pas forcement pour l'aspect build continue) (le ssh slave pour lancer des scripts sur des machines à distance c'est royale)
Sinon il y a aussi un autre truc super dans continuum c'est l'intégration du release manager : faire une release d'artifacts et 2/3 clics !!

sanlaville a dit…

Il y a d'autres aspects que tu n'as pas mentionné comme l'administration, le nombre de releases, la facilité de mise à jour...

Désolé Emmanuel, mais quand on avait regardé, Continuum était vraiment à la traine sur ces points là aussi.

Sans doute que cela c'est amélioré depuis.

nicolas deloof a dit…

Le nombre de release et la mise à jour sont en faveur d'Hudson ou non selon le point de vue. J'en connait plus d'un qui ne sont pas très content de voir un outil avec deux releases par semaine et un bouton "update now" qui peut pèter leur intégration continue mutualisée en un rien de temps (Hudson n'est pas non plus à l'abris des régressions !)