Integration continue

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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.

Voir aussi

  • Jenkins — serveur d'intégration continue de référence
  • Rundeck — orchestration et exécution de jobs
  • Ansible — automatisation de déploiement pouvant s'insérer dans un pipeline CI