L'intégration continue c'est quoi ?

D'après Wikipedia, l'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application développée.

Ok c'est pas très clair. L'intégration continue c'est le fait de mettre en place une liste de vérifications automatiques à chaque changements apportés sur le code. Ces vérifications vont permettre au développeur de garantir un code partagé fonctionnel.
Vous trouverez souvent le terme CI qui vient de Continuous Integration.

L'idée est de minimiser les coûts d'intégration en détectant rapidement les conflits. Une fois le conflit résolu, le développeur peut continuer à travailler avec la certitude que le code respecte les exigences du code existant. L'intégration n'offre pas de garantie que le code est de qualité même s'il est possible d'aller jusqu'à un haut niveau de contrôle du code (avec ESLint par exemple).

Et en pratique ?

Les vérifications sont des tâches automatisées : compilation, tests unitaires, tests fonctionnels. Avec un langage de développeur : c'est une suite de npm install, npm run test, npm run build ou phpunit... Si une des commandes échoue = code non fonctionnel.
Cette automatisation permet de notifier le développeur du succès ou l'échec de l'intégration de sa modification.
Admirez ce magnifique graphique tout droit sorti des bureaux de Google Cloud :

Le développeur envoi ses modifications, ce qui implique différentes étapes de build, de tests. Un rapport est transmit au développeur, si tout est ok, la release est crée.

Pour appliquer cette pratique vous devez utiliser un outil de partage/versionning du code : en général Git. Les développeurs doivent envoyer leurs modifications (commit) régulièrement pour que cela ait du sens. Enfin, il faut développer les tests d'intégration (tests unitaires/fonctionnels).

Il faut ensuite un outil permettant d’exécuter les tests et d'automatiser cette tâche à chaque commit. Il en existe beaucoup ... GitLab, Jenkins, Travis ... Pour indiquer à l'outil quels tests il doit effectuer, il faut créer un fichier de configuration à la racine de notre code qui comporte la liste des instructions. Le format de ce fichier change en fonction de l'outil utilisé.

Conclusion

L'objectif de l'intégration continue est de simplifier ce processus en le rendant automatique et en l'intégrant au quotidien. Cela demande un gros travail de préparation la première fois mais une fois l'équipe habituée, ça coule de source.

L'étape d'après : La livraison continue.

Commentaires