10 juin 2007

Intégration de l'intégration continue

Sujet très technique.

Il s'agissait de mettre en place un système d'intégration continue sur une machine Unix dédiée...

Les contraintes et exigences étaient les suivantes :
  • accès aux sources via internet par le protocole SVN+SSH, sur un port autre que le port 22 (SSH)
  • éventuellement accès aux source sur le LAN par SVN seul (port traditionnel)
  • accès différenciés au système de suivi selon les types d'utilisateurs : accès invité aux résultats, accès authentifié à la configuration du projets, et accès administrateur à la configuration du système lui-même
  • rendu des pages de suivi à travers un reverse proxy HTTP, qui redirige une adresse sur le port 80 vers une adresse sur un autre port et une autre machine sur le même LAN
  • configuration équivalente à un fichier XML exportable, voire gérable en conf
La situation initiale en développement et en configuration était la suivante :
  • accès aux sources depuis Eclipse 3.2.2 / Windows XP SP2 par SVN+SSH
  • accès aux sources depuis Eclipse 3.2.2 / Mac OS X 10.4.9 par SVN+SSH
  • accès aux sources depuis une ligne de commande Windows XP SP2 par SVN+SSH (utilisation conjointe de PuTTY Pageant et de TortoiseSVN)
  • accès aux sources depuis des scripts Ant sous Windows XP SP2 par SVN+SSH (utilisation de svnAnt)
  • accès aux sources depuis une ligne de commande FreeBSD 6.2 par SVN+SSH (déclaration d'un tunnel déclaré dans ~/.subversion/config)
  • accès aux sources depuis des scripts Ant sous FreeBSD 6.2 par SVN+SSH (utilisation de svnAnt)
Les systèmes d'intégration continue que j'ai testés sont les suivants :
  • CruiseControl 2.6.2 (26 avril 2007)
  • LuntBuild 1.4.1 (5 juin 2007)
  • Continuum 1.0.3 (24 avril 2006)
Et le gagnant est... Continuum.

Ce n'est en aucun cas une étude approfondie. L'idée était d'aller vite.

C'est-à-dire que si on galère plus d'une heure sur l'installation ou la configuration d'un produit, hop, on l'abandonne.

Dans le détail, ce que j'ai constaté, sans creuser plus avant :

CruiseControl
  • permet de visualiser les résultats de tests (format junitreport)
  • ne permet pas de différencier les modes d'accès. Tous les utilisateurs qui voient les résultats peuvent également déclencher des builds.
  • réagit très mal quand on le met derrière un reverse proxy. Il y aurait des patchs à rajouter pour essayer quand même, mais bon.
    Quand on rentre dedans et qu'on voit l'indigence de certains développements open source, on essaie de changer des dizaines de lignes, mais on désespère.
    Abandon.
  • depuis Windows, avait de gros problèmes à aller chercher les sources par SVN+SSH (ah, et pourquoi ça ?).
  • note : permet de choisir l'emplacement des répertoires de local working copy pour SVN
LuntBuild
  • offre une typologie de 3 utilisateurs.
  • permet une configuration fine par une IHM web.
  • permet de positionner le rapatriement de sources sur des branches ou des tags
  • permet un paramétrage sympa : on peut fixer des propriétés d'exécution, etc.
  • franchement, c'était le plus prometteur.
  • quoique bénéficiant d'un installeur graphique bien foutu, est compliqué à installer en headless (= en ligne de commande).
    La copie de la webapp dans le répertoire de Tomcat 4.1.34 ne fonctionne pas, on obtient des java.lang.IllegalStateException indémerdables, mais si on le met dans Tomcat 5.5.17, il faut renseigner des variables qui ne sont pas documentées... Produit open source, pas de documentation de référence, tout ça.
    Abandon.
  • depuis Windows, avait de gros problèmes à aller chercher les sources par SVN+SSH (tiens donc ?).
  • note : met où il veut les répertoires de local working copy pour SVN

Continuum
  • permet un accès différencié entre invités et utilisateurs enregistrés
  • est d'une installation très simple
  • a une IHM web très simple aussi, voire rudimentaire (bien plus fonctionnelle que celle de CruiseControl cela dit)
  • du coup, ne disposerait pas d'une configuration exportable ? Apparemment pour cela il s'agit d'utiliser l'interface XML-RPC...
  • permet de changer la Base URL de l'IHM web (pratique pour le reverse proxy)
  • nécessite de modifier %ANT_HOME%\bin\ant.bat sous Windows, pour renvoyer un code erreur !=0 en cas de BUILD FAILED
  • se connecte sans problème à SVN+SSH depuis Windows
  • un projet = un module SVN (ouch!)
  • renomme à sa guise les répertoires de local working copy Subversion... (re-ouch!) Ça m'apprendra à être encore plus modulaire !
  • attend des plombes sur le checkout d'un gros projet (bah, c'est l'initialisation)
  • est rustique par rapport au potentiel de CruiseControl, mais au moins Continuum marche, lui, derrière le reverse proxy ! et marche plutôt bien :-)
  • ah, j'oubliais : la documentation de prise en main est très bonne (au vu du résultat atteint en un temps limité, pas de la qualité intrinsèque de la doc), mais je cherche encore la documentation de référence.

Aucun commentaire: