De l'amélioration du process de développement à moindre coût (part 3/3)
Objectif:
- Montrer l'utilisation d'un outil d'intégration continue simple, efficace et gratuit
De la présentation de Jenkins:
Jenkins est un projet open source qui nous vient de la communauté Java (comme souvent...) et qui permet via ses différents plugin de déployer à peu près n'importe quel environnement d'intégration dans de nombreux langages (http://jenkins-ci.org/)
Je me limiterai dans cet article à présenter une implémentation extrêmement basique avec un Jenkins lié à un TFS, capable de lancer des builds et les tests unitaires à chaque check-in sur le serveur, dans un environnement .NET.
De son installation:
L'installation de Jenkins en soit est très simple, globalement l'installeur Windows va déployer un site web sur le port 8080, qui vous servira d'interface pour paramétrer Jenkins. En soit, juste après l'installation, vous avez une coquille vide.
Du paramétrage de l'environnement:
Pour paramétrer l'environnement, cliquez sur "administrer Jenkins", puis "gestion des plugins". Voilà une liste de plugin pour un paramétrage basique:
- MSBuild plugin: pour les build du code
- Jenkins Nunit plugin: pour l'exécution des tests unitaires
- Team Foundation Server Plug-In: pour surveiller l'archivage du code
Du paramétrage du job:
Par mesure de simplicité, on ne va créer qu'un seul job qui va builder la solution et lancer les tests. Mais on pourrait répartir les tâches entre différents Jobs.
On va donc cliquer sur "Créer un Job" puis "Configurer". Les différents Plugin que vous installerez ajouteront des possibilités dans le menu de configuration.
La première étape est de paramétrer la gestion du code source, pour que Jenkins puisse récupérer et surveiller directement le code.
Je ne rentrerais pas dans le détail du paramétrage pour chaque plugin, mais je vous conseille vivement de regarder directement sur le site wiki de Jenkins. La documentation qui décrit l'installation et l'utilisation de chaque plugin est très bien faite.
Voilà la page pour l'installation du plugin TFS par exemple:https://wiki.jenkins-ci.org/display/JENKINS/Team+Foundation+Server+Plugin
Ensuite paramétrer le build en précisant à Jenkins l'emplacement de la commande MSBuild et la solution à builder (récupérée par Jenkins sur le contrôle de source).
Pour finir, paramétrer l'exécution des tests unitaires en indiquant l'emplacement de la commande Nunit et le projet de Test. Vous pouvez également voir un rapport de test en cochant "publish Nunit test result report".
Pour exécuter un job, cliquez sur "Lancer un build". Si le build échoue, vous pouvez cliquer sur le build et vérifier la sortie console pour corriger les erreurs.
A terme vous devez obtenir un environnement qui relancera un build et les tests à chaque archivage sur votre contrôle de source.
Conclusion:
Une fois de plus, on pourrait écrire des centaines de pages sur l'utilisation et le paramétrage des environnements possibles de Jenkins. Ici je n'ai présenté qu'un job relativement simple, et pour information il m'a fallu environ une journée pour faire marcher ceci (avec installation de la VM comprise).
Une fois de plus il serait possible de pousser beaucoup plus loin le paramétrage (notamment avec des plugins de gestion de qualité de code comme le plugin Sonar). Mais le but ici était de présenter quelque chose de simple et rapide.
Par rapport à une équipe qui développerait sans aucune méthodologie de test, le process proposait dans ces 3 articles montrent une façon simple et rapide pour une première implémentation, à moindre coût: 1-2 jours pour le paramétrage de Jenkins, 1 journée pour former l'équipe à l'utilisation de Pex And Moles.
Evidemment ces articles n'ont aucune prétention, simplement de montrer qu'on peut toujours trouver des solutions rapide quand on a "pas le temps", même pour des choses qui paraissent compliquées!