
Développer un logiciel exige d'intégrer à un projet le travail d'un grand nombre de personnes. Dans ces conditions, certains outils s'avèrent indispensables, comme les logiciels de gestion de versions ou la mise en place de méthodes de travail « agiles ». Mais la complexité du produit fini induit fréquemment le recours à une supervision automatisée des modifications apportées par les développeurs au projet. Par exemple, un projet comme Firefox est composé de plus de 6 millions de lignes de code et il ne s'agit que d'un logiciel modeste si on le compare à d'autres, par exemple à un système d'exploitation. Dans ces conditions, comment s'assurer qu'une modification, même mineure, ne provoquera pas une erreur de la part du logiciel, dans une situation jamais envisagée jusque là ? Une réponse possible à ce problème est la technique de l'intégration continue.
Historique
Si l'idée de l'intégration continue apparaît dès les années 60 (IBM l'emploie pour le développement de son OS/360), son succès date de la fin des années 90 avec l'utilisation des gestionnaires de version et le développement d'une méthode agile, l' « Extreme Programming » . Ce type de méthode insiste sur l'existence de cycles de développement nombreux, obligeant le code d'un projet à s'adapter sans cesse au travail progressif des développeurs. Si l'on ajoute que l'utilisation d'un logiciel de gestions de versions (SVN, Git, …) peut conduire à une modification très rapide du code, il est naturel que le besoin de superviser la cohérence de ces modifications se soit fait sentir.
Principes de l'intégration continue
Pour maintenir la cohésion du code, l'intégration continue repose donc sur le contrôle du dépôt de code. A chaque modification du code doit correspondre un test généralisé permettant d'alerter les développeurs sur les problèmes rencontrés pendant l'examen du code. Il est donc mis en place un serveur d'intégration continue qui, à chaque proposition de modification (« commit »), déclenche les différentes batteries de test (« check-out ») ; si nécessaire, une notification est envoyée décrivant le problème rencontré. Il reste alors à rectifier le problème en mettant à jour le code, c'est la phase dite d' « update ».
Il est donc nécessaire de tenir compte des contraintes suivantes : il doit exister un système automatisé créant le programme à partir de son code source (c'est le « build » du programme) et les développeurs doivent s'astreindre à reporter aussi souvent que possible les modifications qu'ils apportent au projet.
La souplesse de l'informatique fait par exemple que le système de notification peut prendre des formes variées, du simple mail au flux RSS. D'autre part, les plate-formes d'intégration continue sont compatibles avec tous les principaux langages de développement tels le PHP ou le C.
Avantages
Au-delà de l'amélioration de la cohérence du code, le détail des avantages de l'intégration continue montre l'intérêt de l'association entre un logiciel de gestion de versions et un serveur d'intégration continue. Par exemple, la détection des erreurs est faite très rapidement, réduisant le délai nécessaire pour les corriger ; une règle simple en programmation veut que plus tôt une erreur est corrigée, moins elle a de répercussions sur l'ensemble du code : rien de pire qu'un bug latent dont la correction exige de réécrire une partie du projet !
En cas de souci, les développeurs peuvent revenir à un état du code considéré comme « sain » par le gestionnaire d'intégration continue. D'autre part, l'existence d'un état « sain » permet de proposer directement des versions particulières du projet comme une version de démonstration ou plus simplement une version nantie d'un numéro particulier, une « release ». Le ressenti des développeurs est également modifié puisqu'ils ne travaillent plus en aveugle sur un produit trop complexe pour eux ; au contraire, ils peuvent mieux comprendre l'architecture du projet puisque la relation entre leurs modifications et le reste du code est examinée très régulièrement. Enfin le fait que toute modification soit testée du point de vue de la cohérence générale du projet pousse les développeurs à examiner en permanence la qualité de leur code.
Conclusion
Signe du succès de cette méthode de travail, de très nombreux serveurs d'intégration continue existent. Si certains sont propriétaires comme le Team Foundation Server de Microsoft, d'autres sont open-source ; c'est le cas de Tinderbox, proposé par Mozilla, ou de Jenkins, utilisé par exemple par la société Roxecom, une agence web experte en e-commerce et e-marketing.