Integration continue
| Fiche express | |
|---|---|
| Type | Pratique d'automatisation du cycle build/test/déploiement |
| Objectif | Détecter les régressions au plus tôt |
| Outils courants | Jenkins, GitLab CI, GitHub Actions... |
| Voir aussi | Jenkins · Rundeck · Ansible |
L'intégration continue (Continuous Integration, CI) est une pratique de développement logiciel consistant à intégrer fréquemment les modifications de code dans un dépôt partagé, chaque intégration déclenchant automatiquement une chaîne de build, de tests et d'analyses. L'objectif est de détecter les régressions au plus tôt, plutôt que de les découvrir tardivement lors d'une intégration manuelle et espacée.
Principe
- Chaque commit (ou pull request) déclenche un pipeline automatisé : compilation, tests
unitaires/fonctionnels, analyse de qualité de code.
- Le résultat (succès/échec) est visible rapidement par l'équipe, ce qui limite le coût de
correction d'une régression.
- La CI est souvent complétée par du déploiement continu (CD) : livraison automatique en
environnement de recette, voire en production, une fois les tests validés.
Outils courants
- Jenkins — serveur d'automatisation historique, très extensible par plugins.
- GitLab CI/CD, GitHub Actions — CI intégrée à la forge Git.
- Travis CI, CircleCI, Strider CD — offres SaaS ou auto-hébergées.
- PHP CI — orienté écosystème PHP.
Une chaîne typique associe un outil de CI à un gestionnaire de version, éventuellement un bus de messages pour orchestrer les étapes, et le framework applicatif testé (exemple de chaîne observée sur ce périmètre : Jenkins + GitLab + RabbitMQ + Symfony2 + Phing).
Articulation avec le provisioning
Sur des plateformes d'infrastructure comme Foreman ou Openstack, la CI peut aller jusqu'à piloter le provisioning de l'environnement de test lui-même (installation des paquets d'infrastructure nécessaires avant de lancer la suite de tests), par exemple :
yum install -y openstack-foreman-installer foreman-selinux
Exécution de tâches et orchestration
Au-delà du pipeline de build, l'exécution planifiée ou à la demande de jobs opérationnels (déploiements, tâches de maintenance) relève plutôt d'un outil d'orchestration comme Rundeck ou d'automatisation de configuration comme Ansible.