Essayer gratuitement
7 min lecture Guide 85 of 877

Implémenter des Workflows d'Intégration Continue

L'Intégration Continue (CI) transforme comment les équipes valident les changements de code en exécutant automatiquement tests, linting et vérifications qualité sur chaque commit. Quand CI s'intègre avec GitScrum via les connexions GitHub, GitLab ou Bitbucket, les statuts de tâches se mettent à jour automatiquement basés sur les résultats de build, donnant à toute l'équipe visibilité sur la santé du code. Cela crée un gate qualité qui empêche le code cassé d'atteindre les branches principales tout en gardant le tableau synchronisé avec l'état réel du développement.

Fondamentaux CI

Pourquoi CI Importe

SANS CI:
┌─────────────────────────────────────────────────────────────┐
│ PROBLÈMES VÉRIFICATION MANUELLE                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Développeur push code:                                      │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ "Fonctionne sur ma machine" ─────────────────────────────││
│ │                                │                        ││
│ │                                ▼                        ││
│ │ ┌───────────────────────────────────────────────────┐   ││
│ │ │ PROBLÈMES DÉCOUVERTS PLUS TARD:                   │   ││
│ │ │                                                   │   ││
│ │ │ • Version Node différente sur serveur CI          │   ││
│ │ │ • Variable environnement manquante                │   ││
│ │ │ • Test passe localement, échoue en isolation      │   ││
│ │ │ • Conflit merge pas correctement résolu           │   ││
│ │ │ • Dépendance pas dans package.json                │   ││
│ │ │                                                   │   ││
│ │ │ Temps debug: Heures à jours                       │   ││
│ │ │ Changement contexte: Déjà sur prochaine tâche     │   ││
│ │ │ Blame: "Qui a cassé le build?"                    │   ││
│ │ └───────────────────────────────────────────────────┘   ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

AVEC CI:
┌─────────────────────────────────────────────────────────────┐
│ FLUX VÉRIFICATION AUTOMATISÉE                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ┌───────────┐    ┌───────────┐    ┌───────────┐            │
│ │   Push    │───▶│ CI Exécute│───▶│ Résultat  │            │
│ │  Commit   │    │  Checks   │    │  en 5min  │            │
│ └───────────┘    └───────────┘    └───────────┘            │
│                        │                │                   │
│                        ▼                ▼                   │
│              ┌─────────────────────────────────────┐        │
│              │ CHECKS EXÉCUTENT:                   │        │
│              │ ✓ Installer dépendances             │        │
│              │ ✓ Lint code                         │        │
│              │ ✓ Type check                        │        │
│              │ ✓ Exécuter tests unitaires          │        │
│              │ ✓ Exécuter tests intégration        │        │
│              │ ✓ Build artefact production         │        │
│              │                                     │        │
│              │ Tout passe → ✅ Merge autorisé       │        │
│              │ Échec → ❌ Merge bloqué              │        │
│              └─────────────────────────────────────┘        │
│                                                             │
│ Développeur trouve issue: 5 minutes, pas jours              │
│ Contexte: Encore dans même tâche                           │
│ Responsabilité: Clair quel commit a cassé quoi             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Étapes Pipeline CI

STRUCTURE PIPELINE STANDARD:
┌─────────────────────────────────────────────────────────────┐
│ ÉTAPES PIPELINE                                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Étape 1: PRÉPARER (1-2 min)                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Checkout code                                         ││
│ │ • Cache dépendances                                     ││
│ │ • Installer packages                                    ││
│ │                                                         ││
│ │ Conditions échec: Issues réseau, cache corrompu         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ Étape 2: VALIDER (2-5 min)                                  │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Exécuter en parallèle:                                  ││
│ │ • Lint (ESLint, Prettier, etc.)                        ││
│ │ • Type check (TypeScript)                              ││
│ │ • Audit sécurité (npm audit, Snyk)                     ││
│ │                                                         ││
│ │ Conditions échec: Violations style, erreurs types      ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ Étape 3: TESTER (5-15 min)                                  │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Séquentiel:                                             ││
│ │ • Tests unitaires                                       ││
│ │ • Tests intégration                                     ││
│ │ • Tests E2E (optionnel par-PR)                         ││
│ │                                                         ││
│ │ Conditions échec: Échecs tests, baisse couverture      ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ Étape 4: BUILD (2-5 min)                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Build artefact production                             ││
│ │ • Vérifier taille bundle                                ││
│ │ • Upload artefacts                                      ││
│ │                                                         ││
│ │ Conditions échec: Erreurs build, limites dépassées     ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ Étape 5: DEPLOY (sur merge vers main)                       │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Deploy vers staging                                   ││
│ │ • Exécuter smoke tests                                  ││
│ │ • Notifier équipe                                       ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Intégration GitScrum

Connecter Fournisseurs Git

FLUX GITSCRUM + CI:
┌─────────────────────────────────────────────────────────────┐
│ MISES À JOUR AUTOMATIQUES TABLEAU                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Setup: GitScrum → Intégrations → GitHub/GitLab/Bitbucket    │
│                                                             │
│ WORKFLOW:                                                   │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 1. Développeur crée branche:                            ││
│ │    git checkout -b feature/PROJ-123-user-auth           ││
│ │                                       ^^^^              ││
│ │                                       ID Tâche          ││
│ │                                                         ││
│ │ 2. Développeur ouvre PR référençant tâche:              ││
│ │    Titre PR: "feat: implement user auth [PROJ-123]"     ││
│ │                                                         ││
│ │ 3. GitScrum automatiquement:                            ││
│ │    • Lie PR à tâche PROJ-123                            ││
│ │    • Affiche statut PR sur carte tâche                  ││
│ │    • Met à jour tâche basé sur état PR                  ││
│ │                                                         ││
│ │ 4. CI exécute, résultats visibles dans GitScrum:        ││
│ │    ┌─────────────────────────────────────────────────┐  ││
│ │    │ Tâche: PROJ-123                                 │  ││
│ │    │                                                 │  ││
│ │    │ 🔗 PR #45: feat: implement user auth            │  ││
│ │    │    ⏳ CI Exécution: 3 de 5 checks passés        │  ││
│ │    │    │                                            │  ││
│ │    │    ├─ ✅ lint                                    │  ││
│ │    │    ├─ ✅ typecheck                               │  ││
│ │    │    ├─ ✅ unit-tests                              │  ││
│ │    │    ├─ ⏳ integration-tests (en cours)            │  ││
│ │    │    └─ ⏸️ deploy (en attente)                     │  ││
│ │    └─────────────────────────────────────────────────┘  ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ Statut CI visible sans quitter tableau GitScrum             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Gates Qualité

Checks Requis

CHECKS BLOQUANTS VS NON-BLOQUANTS:
┌─────────────────────────────────────────────────────────────┐
│ CONFIGURER GATES QUALITÉ                                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ DOIT PASSER (bloque merge):                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✓ Lint              Pas erreurs syntaxe, style cohérent ││
│ │ ✓ Type check        TypeScript compile sans erreurs     ││
│ │ ✓ Tests unitaires   Tous tests passent                  ││
│ │ ✓ Build             Build production réussit            ││
│ │ ✓ Sécurité          Pas vulnérabilités haute/critique   ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ DEVRAIT PASSER (avertir mais permettre):                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ⚠ Couverture        >80% couverture (avertir si moins)   ││
│ │ ⚠ Taille bundle     <500KB (avertir si plus)             ││
│ │ ⚠ Performance       Lighthouse >90 (avertir si moins)    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Pratiques Équipe

Discipline CI

ACCORDS CI ÉQUIPE:
┌─────────────────────────────────────────────────────────────┐
│ NORMES CI ÉQUIPE                                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ✅ FAIRE:                                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Exécuter tests localement avant push                  ││
│ │ • Corriger builds cassés immédiatement                  ││
│ │ • Garder pipeline sous 15 minutes                       ││
│ │ • Réviser changements config CI soigneusement           ││
│ │ • Surveiller tests instables hebdomadairement           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ❌ NE PAS FAIRE:                                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ • Push direct vers main                                 ││
│ │ • Sauter CI checks "juste cette fois"                   ││
│ │ • Laisser builds rouges pendant nuit                    ││
│ │ • Ignorer tests échoués en les sautant                  ││
│ │ • Merge sans revue de PR                                ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PROTOCOLE BUILD CASSÉ:                                      │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 1. Tout travail s'arrête quand main branch est rouge    ││
│ │ 2. Personne qui a cassé prend responsabilité            ││
│ │ 3. Si pas réparable en 10 min, revert et réparer en brch││
│ │ 4. Poster dans Discussions: ce qui s'est passé, prévenir││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Solutions Connexes