Hudson Jenkins - Serveur d'intégration continue
A quoi ça sert ?
Intégration continue - Rappel
L'intégration, si on doit le résumé en quelques mots, c'est : "voir les problèmes le plus rapidement possible".
Ce qu'il faut comprendre, c'est que ce concept n'est en aucun cas l'arme absolue contre les défaillances du codes ou du codeurs. Ce qu'il apporte c'est la possibilité de voir les problèmes dès que le codes est écrits et non pas lorsque le code est à quelque jour d'une livraison client par exemple. L'idée étant de voir le comportement de l'ensemble des modules d'un logiciel dans l'environnement de livraison (de préférence) et ainsi voir les problèmes qui peuvent être liés soit à l'environnement soit à des dépendances du code.
Voici comment nous pouvons représenter le cheminement d'un développement :
Sans intégration continue | Avec intégration continue |
---|---|
![]() |
![]() |
Pour que le processus est un sens, les tests sont très importants. Unitaires et d'intégrations, ils vont être la clé de voûte de la détection des erreurs introduites par les dernières modifications du code.
Comme ma présentation ne porte pas sur l'intégration continue, si vous désirez plus de détails, vous pouvez aller voir le sites de Damien THIESSON ici.
Les objectifs d'un serveur d'intégration continue
L'intégration continue en elle-même peut très bien être réaliser par une personne, à la main. Cependant cette tâche serai longue et fastidieuse. C'est pourquoi il existe des serveurs pour remplir ce rôle. Nous pouvons voir 3 rôles importants qui sont délégués à ces serveurs :
- centralisation : permettre à un ensemble de personne de bénéficier d'informations communes.
- automatisation : permettre d'effectuer l'ensemble des phases de productions (compilation, tests, déploiement...) sans ou avec très peu d'intervention d'un humain.
- historisation : permettre de garder les productions précédentes et voir l'évolution des productions.
De nombreux produits répondent à ces critères : Hudson/Jenkins, Bamboo (Atlassian), Continuum (Apache), Cruise Control, Luntbuild, Anthill, TeamCity, BuildForge et sûrement d'autres. J'ai choisi de présenter Hudson/Jenkins car j'en ai une expérience pratique assez importante et que j'ai pu voir ces nombreux avantages ainsi que la facilité avec laquelle il est possible de l'intégrer dans un environnement pré-existant.