8 min lecture • Guide 309 of 877
Meilleures Pratiques d'Intégration Continue
L'Intégration Continue signifie fusionner le code fréquemment et valider chaque fusion automatiquement. Une bonne CI détecte les bugs tôt, permet un refactoring confiant et garde la branche principale toujours livrable. Ce guide couvre l'implémentation pratique de la CI.
Étapes du Pipeline CI
| Étape | Objectif | Temps Cible |
|---|---|---|
| Lint | Style de code | <1 min |
| Tests unitaires | Vérification logique | <5 min |
| Build | Compilation | <3 min |
| Intégration | Interaction composants | <10 min |
| Sécurité | Scan vulnérabilités | <5 min |
Structure du Pipeline
Étapes Essentielles
ÉTAPES DU PIPELINE CI
═════════════════════
ÉTAPE 1 : LINT & FORMAT
─────────────────────────────────────
Objectif : Style de code cohérent
Outils : ESLint, Prettier, Black, etc.
Temps : <1 minute
Vérifications :
├── Formatage du code
├── Règles de style
├── Ordre des imports
├── Pas de variables non utilisées
└── Détecter problèmes avant revue
ÉTAPE 2 : TESTS UNITAIRES
─────────────────────────────────────
Objectif : Vérification logique
Outils : Jest, PyTest, JUnit, etc.
Temps : <5 minutes
Exécuter :
├── Tous les tests unitaires
├── Tests rapides, isolés
├── Pas de dépendances externes
├── Zones haute couverture
└── Feedback rapide
ÉTAPE 3 : BUILD
─────────────────────────────────────
Objectif : Vérifier compilation
Outils : Webpack, tsc, cargo, etc.
Temps : <3 minutes
Vérifier :
├── Code compile
├── Dépendances résolues
├── Assets générés
├── Artefacts build créés
└── Peut produire sortie
ÉTAPE 4 : TESTS D'INTÉGRATION
─────────────────────────────────────
Objectif : Interaction composants
Outils : Frameworks de test + DB/services test
Temps : <10 minutes
Tester :
├── Endpoints API
├── Opérations base de données
├── Interactions services
├── Flux clés
└── Scénarios réalistes
ÉTAPE 5 : SCAN SÉCURITÉ
─────────────────────────────────────
Objectif : Trouver vulnérabilités
Outils : Snyk, OWASP, npm audit, etc.
Temps : <5 minutes
Scanner :
├── Vulnérabilités dépendances
├── Problèmes sécurité code
├── Détection secrets
├── Conformité licences
└── Portes de sécurité
Configuration du Pipeline
EXEMPLE DE CONFIGURATION CI
═══════════════════════════
EXEMPLE GITHUB ACTIONS :
─────────────────────────────────────
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run lint
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run build
integration:
runs-on: ubuntu-latest
needs: [lint, test, build]
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run test:integration
EXÉCUTION PARALLÈLE :
─────────────────────────────────────
├── Lint, Test, Build en parallèle
├── Intégration après que tous passent
├── Pipeline global plus rapide
├── Échec tôt, feedback tôt
└── Optimiser pour la vitesse
Feedback Rapide
La Vitesse Compte
OPTIMISATION VITESSE CI
═══════════════════════
POURQUOI LA VITESSE COMPTE :
─────────────────────────────────────
CI lente :
├── Développeurs attendent
├── Basculent vers autre travail
├── Coût changement contexte
├── Accumulent les changements
├── Trouvent problèmes tard
└── Frustration
CI rapide :
├── Feedback immédiat
├── Corriger pendant contexte frais
├── Commits plus fréquents
├── Détecter problèmes tôt
├── Bonheur développeur
└── Qualité supérieure
CIBLES DE VITESSE :
─────────────────────────────────────
├── Lint : <1 minute
├── Tests unitaires : <5 minutes
├── Pipeline complet : <10 minutes
├── Max absolu : 15 minutes
└── Plus rapide est mieux
STRATÉGIES D'OPTIMISATION :
─────────────────────────────────────
Cache :
├── Cacher dépendances
├── Cacher artefacts build
├── Cacher fixtures de test
├── Réutiliser ce qui ne change pas
└── Accélération significative
Parallélisation :
├── Exécuter étapes indépendantes en parallèle
├── Diviser suites de tests
├── Runners multiples
├── Réduire temps horloge
└── Utiliser ressources disponibles
Optimisation tests :
├── Tests unitaires rapides (majorité)
├── Moins de tests d'intégration
├── Tests les plus lents en dernier
├── Sauter zones inchangées
└── Pyramide de tests
Maintenir le Vert
Toujours Livrable
GARDER CI VERTE
═══════════════
RÈGLE : CORRIGER BUILDS CASSÉS IMMÉDIATEMENT
─────────────────────────────────────
Quand CI échoue :
├── Arrêter autre travail
├── Corriger immédiatement
├── Ou reverter le changement
├── Priorité #1 de l'équipe
└── Build cassé = équipe bloquée
RESPONSABILITÉ :
─────────────────────────────────────
Celui qui casse corrige :
├── Ton commit, ta correction
├── Réponse rapide
├── Ne pas laisser pour plus tard
├── Ne pas ignorer
└── Responsabilité
ÉVITER BUILDS CASSÉS :
─────────────────────────────────────
Prévention :
├── Exécuter tests localement d'abord
├── Petits commits fréquents
├── Revue de code approfondie
├── Pre-commit hooks
└── Détecter avant push
Pre-commit :
├── Vérification lint
├── Vérification format
├── Tests unitaires rapides
├── Détecter problèmes évidents
└── Feedback plus rapide
VERT = LIVRABLE :
─────────────────────────────────────
Branche principale toujours :
├── Buildable
├── Tests passants
├── Déployable
├── Prête pour production
└── Livrable à tout moment
Fréquence d'Intégration
Fusionner Souvent
INTÉGRATION FRÉQUENTE
═════════════════════
FUSIONNER QUOTIDIENNEMENT (AU MOINS) :
─────────────────────────────────────
Meilleure pratique :
├── Fusions multiples par jour
├── Petits changements à chaque fois
├── Jamais plus de 1 jour sans fusion
├── Branches longues = problèmes intégration
└── Continu signifie continu
PETITS CHANGEMENTS :
─────────────────────────────────────
Avantages du petit :
├── Plus facile à reviewer
├── Moins susceptible de conflits
├── Problèmes isolés
├── Facile à reverter
├── Feedback plus rapide
└── Risque plus faible
FEATURE FLAGS :
─────────────────────────────────────
Fusionner fonctionnalités incomplètes :
├── Code déployé mais inactif
├── Flag contrôle visibilité
├── Intégrer continuellement
├── Activer quand prêt
└── Découpler déploiement de release
Portes de Qualité
Vérifications Requises
PORTES DE QUALITÉ CI
════════════════════
REQUIS POUR FUSIONNER :
─────────────────────────────────────
☐ Tous tests passants
☐ Lint propre
☐ Build réussit
☐ Seuil couverture atteint
☐ Scan sécurité propre
☐ Revue code approuvée
└── Tous doivent passer pour fusionner
PROTECTION DE BRANCHE :
─────────────────────────────────────
Paramètres GitHub :
├── Exiger vérifications de statut
├── Exiger branches à jour
├── Exiger approbation de revue
├── Pas de force push vers main
├── Pas de commits directs vers main
└── Appliquer la qualité
SEUILS DE COUVERTURE :
─────────────────────────────────────
Définir minimum :
├── 80% couverture globale
├── Pas de diminution depuis baseline
├── Nouveau code doit être couvert
├── Échec build si en dessous
└── Maintenir qualité dans le temps
PORTES DE SÉCURITÉ :
─────────────────────────────────────
├── Pas de vulnérabilités critiques
├── Pas de hautes sans exception
├── CVE connus bloquants
├── Détection secrets
└── Sécurité non négociable
Intégration CI GitScrum
Workflow Connecté
GITSCRUM + INTÉGRATION CI
═════════════════════════
LIER AUX TÂCHES :
─────────────────────────────────────
PR liée à tâche :
├── Statut CI visible sur tâche
├── Auto-mise à jour sur complétion CI
├── Fusion → Mise à jour statut tâche
└── Contexte connecté
TRANSITIONS AUTOMATISÉES :
─────────────────────────────────────
Événements CI déclenchent :
├── PR fusionnée → Tâche vers "Fait"
├── CI échouée → Alerte sur tâche
├── Déploiement terminé → Notifier
└── Automatisation workflow
VISIBILITÉ :
─────────────────────────────────────
Dashboard :
├── Widget statut CI
├── Builds échoués visibles
├── Statut déploiement
├── Conscience d'équipe
└── Problèmes remontent vite
LIAISON COMMITS :
─────────────────────────────────────
Message commit : "GS-123: Add login"
├── Lie à la tâche automatiquement
├── Progrès visible
├── Historique suivi
└── Traçabilité
Meilleures Pratiques
Pour la CI
- Pipelines rapides — Moins de 10 minutes
- Corriger immédiatement — Builds cassés sont priorité 1
- Fusionner fréquemment — Quotidien minimum
- Portes de qualité — Vérifications requises avant fusion
- Toujours vert — Main est toujours livrable
Anti-Patterns
ERREURS CI :
✗ Pipelines lents (30+ minutes)
✗ Ignorer les échecs
✗ Branches de longue durée
✗ Sauter les tests
✗ Pas de protection de branche
✗ Déploiements manuels
✗ Tests instables tolérés
✗ "Ça marche sur ma machine"