L'intégration Continue
Comment cela fonctionne?
Fonctionnement
Principe
Le but de l'intégration continue est d'effectuer en parallèle les étapes de développement et d'intégration du projet, comme illustré sur le schéma ci-dessous. Le but est d'éliminer au maximum les détections de bug en phase finale du projet. En effet, la phase d'intégration est souvent source d'instabilité et de stress, car en général proche de la date de livraison. Pour un environnement classque (le cas barré d'une croix rouge), les intégrateurs n'ont aucune idée du nombre de bugs qui vont apparaître, et sur la difficulté à les corriger. Une étude a montré de 5% des bugs représentent 95% du temps de débug. Ces derniers sont le plus souvent rencontrés lors de la phase d'intégration. Il peut s'agir d'une erreur de développement, ou pire, une erreur de spécification. L'existence et la validation progressive des tests d'intégration responsabilise les développeurs sur la bonne interaction de leurs modules de développement.

Intégration réellement continue?
Les développeurs contribuent (par des commits) régulièrement, mais ponctuellement au projet. Dès lors, qu'apelle-t-on exactement intégration continue? Un consensus s'est créé après les premières expérimentations: une intégration est admise comme continue si tous les développeurs commitent au moins une fois par jour leur contributions au projet.
Pourquoi cette restriction? Car un code qui reste isolé plusieurs jours est susceptible de provoquer de fortes régressions, et il vaut mieux détecter les problèmes au plus tôt. De plus, un code incorrect écrit il y a plusieurs jours va nécéssité un temps de ré-appropriation, induisant une baisse de productivité évidente.
Les outils d'intégration continue: des orchestrateurs avant tout
Les outils d'intégration continue sont avant tout chargés d'orchestrer un certains nombre de composants, ces derniers étant présent sous forme de modules indépendants. Ainsi ces outils sont friands de plug-ins. Le plus en vogue, Hudson, met à disposition plus de 300 plug-ins, à utiliser selon ses besoins.
Cependant, l'organisation de ces plug-ins n'est pas archaïque pour autant. Ils ont tous un rôle déterminé, et on peut distinguer 4 grands pôles sur chaque serveur d'intégration continue, qui constituent l'essentiel du travail de l'outil:
