Definition
La CI (Continuous Integration / Integration Continue) est une pratique de developpement logiciel ou les developpeurs mergent frequemment leur code dans un depot partage (au moins quotidiennement). Chaque merge declenche automatiquement un build et une suite de tests, fournissant un feedback rapide sur la qualite du code.
La CI est l'un des piliers du DevOps et de l'agilite moderne.
Principes fondamentaux
- Commits frequents : chaque developpeur commit au moins une fois par jour
- Build automatique : chaque push declenche un build
- Tests automatises : tests unitaires, integration et linting a chaque build
- Feedback rapide : les resultats sont visibles en quelques minutes
- Correction immediate : un build casse est la priorite n°1 de l'equipe
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
- Detection precoce des bugs (heures au lieu de jours/semaines)
- Reduction des conflits de merge (commits petits et frequents)
- Confiance dans le code (tests automatiques a chaque changement)
- Vitesse de livraison accrue (base de code toujours deployable)
Metriques CI
- Build success rate : pourcentage de builds reussis (cible : >95%)
- Build duration : duree 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 a GitHub, YAML |
| GitLab CI | SaaS/self-hosted | Integre a GitLab |
| Jenkins | Self-hosted | 1800+ plugins, flexible |
| CircleCI | SaaS | Rapide, Docker-native |
| Travis CI | SaaS | Historique open source |