6 min lecture • Guide 425 of 877
Meilleures Pratiques de Pipeline CI/CD
Les pipelines CI/CD automatisent le chemin du code vers la production. Les bons pipelines sont rapides, fiables et détectent les problèmes tôt. Les mauvais pipelines sont lents, instables et créent la peur du déploiement. Ce guide couvre la construction de pipelines efficaces.
Étapes du Pipeline
| Étape | Objectif | Vitesse |
|---|---|---|
| Build | Compiler le code | < 2 min |
| Test | Vérifier la correction | < 5 min |
| Sécurité | Trouver les vulnérabilités | < 3 min |
| Déployer | Livrer à l'environnement | < 5 min |
Conception du Pipeline
Étapes Essentielles
CONCEPTION PIPELINE CI/CD
═════════════════════════
PIPELINE BASIQUE :
─────────────────────────────────────
build → test → deploy
Début simple
PIPELINE COMPLET :
─────────────────────────────────────
┌─────────────────────────────────────┐
│ CI │
├─────────────────────────────────────┤
│ checkout → build → lint → test │
│ │ │ │
│ └── scan sécurité ───┘ │
└─────────────┬───────────────────────┘
│
▼ artefact
┌─────────────────────────────────────┐
│ CD │
├─────────────────────────────────────┤
│ deploy staging → smoke → approuver │
│ │ │ │
│ ▼ ▼ │
│ tests intégration deploy prod │
│ │ │
│ tests smoke │
└─────────────────────────────────────┘
DÉTAILS DES ÉTAPES :
─────────────────────────────────────
Build :
├── Compiler/transpiler le code
├── Installer les dépendances
├── Créer l'artefact de build
└── Rapide, parallélisable
Lint :
├── Vérifications de style de code
├── Analyse statique
├── Vérification du format
└── Détecter les problèmes tôt
Optimisation de Vitesse
TEMPS CIBLES PAR ÉTAPE
══════════════════════
Étape Cible Maximum
─────────────────────────────────────
Lint/Format 30s 1 min
Tests Unitaires 2 min 5 min
Build 2 min 5 min
Tests Intégration 5 min 10 min
Scan Sécurité 2 min 5 min
Deploy Staging 3 min 5 min
Tests E2E 10 min 20 min
Deploy Prod 3 min 5 min
─────────────────────────────────────
TOTAL CI ~5 min ~10 min
TOTAL CD ~15 min ~30 min
Exécution Parallèle
Stratégie de Parallélisation
SÉQUENTIEL vs PARALLÈLE
═══════════════════════
SÉQUENTIEL (lent) :
Lint → Unit → Build → Intégration
1m 3m 2m 5m
= 11 minutes
PARALLÈLE (rapide) :
┌── Lint (1m) ──┐
├── Unit (3m) ──┼─→ Build (2m) → Intégration (5m)
└── Types (1m) ─┘
= 10 minutes
AVEC PARALLÉLISATION MAXIMALE :
┌── Lint (1m) ──────────────────────┐
├── Unit Service A (2m) ────────────┤
├── Unit Service B (2m) ────────────┼─→ Build → Deploy
├── Unit Service C (2m) ────────────┤
└── Scan Sécurité (2m) ─────────────┘
= 7 minutes
Gestion des Échecs
Patterns d'Échec
STRATÉGIES DE GESTION D'ÉCHEC
═════════════════════════════
ÉCHOUER RAPIDEMENT :
├── Arrêter le pipeline à la première erreur
├── Ne pas gaspiller des ressources sur des builds condamnés
└── Fournir un retour immédiat aux développeurs
RÉESSAYER LES ÉCHECS TRANSITOIRES :
├── Timeouts réseau : réessayer 2-3 fois
├── Échecs service externe : réessayer avec backoff
└── Ne pas réessayer les échecs déterministes
ALERTER INTELLIGEMMENT :
├── Notifier uniquement sur changement d'état
├── Éviter la fatigue d'alerte
└── Escalader les échecs persistants
Gérer les Tests Instables
PROCESSUS DE GESTION TESTS INSTABLES
════════════════════════════════════
1. DÉTECTION
├── Surveiller le taux d'échec par test
├── Identifier les tests avec échecs intermittents
└── Seuil : >2% échecs non-déterministes
2. QUARANTAINE
├── Déplacer vers une suite séparée
├── Ne pas bloquer les PRs
└── Exécuter en parallèle pour diagnostic
3. CORRECTION
├── Prioriser comme bug critique
├── Analyser les conditions de course
└── Ajouter des assertions de stabilité
4. RÉINTÉGRATION
├── Vérifier stabilité sur 50+ exécutions
├── Restaurer dans la suite principale
└── Surveiller les régressions
Sécurité dans le Pipeline
Étapes de Sécurité
INTÉGRATION SÉCURITÉ
════════════════════
SCAN SAST (Analyse Statique) :
├── Exécuter sur chaque commit
├── Bloquer sur vulnérabilités critiques
└── Avertir sur vulnérabilités moyennes
SCAN DÉPENDANCES :
├── Vérifier les CVE connues
├── Mettre à jour automatiquement les patchs
└── Alerter sur les nouvelles vulnérabilités
SCAN SECRETS :
├── Détecter les secrets dans le code
├── Bloquer les commits avec secrets
└── Intégrer avec gestionnaire de secrets
SCAN IMAGE CONTAINER :
├── Vérifier l'image de base
├── Analyser les couches
└── Valider la configuration
Intégration avec GitScrum
Mises à Jour Automatiques de Statut
INTÉGRATION GITSCRUM ↔ PIPELINE
═══════════════════════════════
Événement Pipeline → Action GitScrum
───────────────────────────────────────────────
Build démarré → Tâche → En Build
Tests réussis → Commentaire ajouté
Build échoué → Notification équipe
Déployé en staging → Tâche → En Staging
Tests E2E réussis → Tâche → Prêt Prod
Déployé en prod → Tâche → Terminée
Tableau de Bord de Déploiement
TABLEAU DE BORD LIVRAISON
═════════════════════════
Sprint 14 - État des Déploiements
─────────────────────────────────
Aujourd'hui :
├── 3 déploiements réussis
├── 0 échecs
└── 1 rollback (corrigé)
Cette Semaine :
├── Taux de succès : 95%
├── Temps moyen de déploiement : 8 min
└── Fréquence : 4 déploiements/jour
Tâches Déployées :
├── #123 Nouvelle fonc. auth ✓
├── #124 Correction bug paiement ✓
└── #125 Optimisation performance ✓
Meilleures Pratiques
Configuration Recommandée
| Étape | Timeout | Sur Échec |
|---|---|---|
| Lint/Format | 2 min | Bloquer merge |
| Tests Unitaires | 10 min | Bloquer merge |
| Build | 5 min | Bloquer merge |
| Intégration | 15 min | Bloquer merge |
| Scan Sécurité | 10 min | Avertir (bloquer sur critique) |
| Deploy Staging | 10 min | Arrêter pipeline |
| Tests E2E | 20 min | Arrêter pipeline |
| Deploy Prod | 10 min | Alerte + rollback |
Liste de Contrôle Pipeline
- [ ] Temps total CI < 10 minutes
- [ ] Parallélisation maximisée
- [ ] Tests instables en quarantaine
- [ ] Scans de sécurité intégrés
- [ ] Rollback automatique configuré
- [ ] Notifications pertinentes seulement
- [ ] Métriques de pipeline suivies