« Retour de Paris Web 2011 | Home | Parcs d'activités »
11 novembre 2011
Intégration continue Python-Django (avec Integrity)
Attention - ce message remonte à 2011. Il conviendra de faire vos propres recherche sur les solutions à la mode à l'époque où vous lirez ce message.
Chez 9h37 et chez beaucoup de nos collègues artisans du logiciel, on retrouve la même envie : s'assurer de la qualité de nos produits. Et si possible, éviter d'avoir nos utilisateurs au téléphone pour un problème bête.
Au long d'une journée chargée en développements, beaucoup de petites modifications doivent être testées. De manière la plus automatique possible, histoire que cela soit systématique. Nous exploitons le concept d'intégration continue.
Nous utilisions déjà GitHub pour ses fonctions de code reviewing, de notification, discussion et gestion de bugs. Ajouter un hook pour déclencher une batterie de tests à chaque modification d'un projet est extrêmement simple.
Les projets que nous développons reposent sur Django, un framework web en Python. Dans la recherche de notre serveur d'intégration continue, nous sommes passés par différentes étapes.
Pour commencer, nous avons utilisé buildbot jusqu'à la fin 2010. C'était un défi personnel et j'ai passé pas mal de temps à configurer les différents services esclaves. Il reste lourd à mettre en place et peu adapté aux configurations ne nécessitant qu'un seul environnement de test. À mon avis, il reste à réserver aux projets multi-plateformes.
Et j'ai découvert Integrity en suivant le blog de GitHub, qui a recruté Simon Rozet, l'un des développeurs. Integrity, c'est de l'intégration continue du type feu rouge ou vert. Soit votre batterie de tests passe, soit elle ne passe pas. Et si elle ne passe pas, vous recevez un e-mail. C'est extrêmement simple à mettre en œuvre. Et nous on aime le KISS.
Ensuite, jenkins. Après avoir vu le super tutoriel de Jenkins-Django de Nicolas Perriault lors de la DjangoCong 2011, j'avais moi aussi envie d'avoir mes graphiques de couverture de mon code par les suites de test. En plus Jenkins vient d'un monde de l'Informatique d'Entreprise (tm). Il s'installe en deux paquets et trois clics. Revers de la médaille de tout outil (trop) complet (mais très puissant), la configuration et la micro-configuration nécessitent d'innombrables allers-retours dans l'interface d'administration.
Et j'ai re-découvert Integrity. Lors d'un gros manque de KISS hier soir chez 9H37, j'ai promis à Nicolas de revenir sur Integrity et de mettre Jenkins de côté.
Voici donc un tutoriel rapide pour installer Integrity sur une distribution Debian ou Ubuntu en quelques minutes :
- Lire la procédure officielle
$ sudo apt-get install rubygem1.8 libsqlite3-dev libxml2-dev libxslt-dev
$ export GEM_HOME=/home/integrity/.gems- Ne pas faire de checkout de la branche deploy : rester sur master ( git checkout master )
- Après le clone du repository officiel et en attendant l'intégration du pull request :
$ git remote add richmeyers https://github.com/richmeyers/integrity.git
$ git pull --rebase richmeyers dependency-cleanup
Et voilà, il n'y a plus qu'à lancer, rajouter un projet en fournissant simplement l'adresse du repository et c'est parti !
Pour tester Django, nous utilisons un script créant ou chargeant notre environnement virtuel et exécutant ./manage.py test .