Définition
La CI (Continuous Intégration / Intégration Continue) est une pratique de développement logiciel ou les développeurs mergent fréquemment leur code dans un dépôt partage (au moins quotidiennement). Chaque merge declenche automatiquement un build et une suite de tests, fournissant un feedback rapide sur la qualité du code.
La CI est l'un des piliers du DevOps et de l'agilite moderne.
Principes fondamentaux
- Commits fréquents : chaque développeur commit au moins une fois par jour
- Build automatique : chaque push declenche un build
- Tests automatises : tests unitaires, intégration et linting à chaque build
- Feedback rapide : les résultats sont visibles en quelques minutes
- Correction immédiate : un build casse est la priorité n°1 de l'équipe
Pipeline CI typique
Push → Checkout → Install deps → Lint → Type check → Unit tests → Build → Integration tests
Exemple (GitHub Actions)
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm run lint
- run: npm run typecheck
- run: npm test
- run: npm run build
Benefices mesurables
- Détection precoce des bugs (heures au lieu de jours/semaines)
- Réduction des conflits de merge (commits petits et fréquents)
- Confiance dans le code (tests automatiques à chaque changement)
- Vitesse de livraison accrue (base de code toujours déployable)
Métriques CI
- Build success rate : pourcentage de builds reussis (cible : >95%)
- Build duration : durée du pipeline (cible : <10 minutes)
- Mean Time To Recovery (MTTR) : temps pour corriger un build casse
- Code coverage : pourcentage de code couvert par les tests
Outils CI populaires
| Outil | Type | Particularite |
|---|---|---|
| GitHub Actions | SaaS | Integre à GitHub, YAML |
| GitLab CI | SaaS/self-hosted | Integre à GitLab |
| Jenkins | Self-hosted | 1800+ plugins, flexible |
| CircleCI | SaaS | Rapide, Docker-native |
| Travis CI | SaaS | Historique open source |