Aller au contenu principal

Introduction au CI/CD


Table des matières

  1. Définitions CI/CD
  2. Intégration Continue (CI)
  3. Livraison Continue (CD)
  4. Déploiement Continu
  5. Anatomie d'un pipeline
  6. Bonnes pratiques


1 - Définitions CI/CD

Vue d'ensemble

Les trois concepts

ConceptDéfinitionAutomatisation
CIIntégration fréquente du codeBuild + Tests
Continuous DeliveryPrêt à déployer à tout moment+ Release
Continuous DeploymentDéploiement automatique+ Production
info

La différence entre Continuous Delivery et Continuous Deployment est une validation manuelle : Delivery attend une approbation, Deployment est entièrement automatique.

🔝 Retour à la table des matières



2 - Intégration Continue (CI)

Le problème sans CI

La solution CI

Les règles de CI

RègleDescription
Commits fréquentsAu moins une fois par jour
Build automatiqueDéclenché à chaque commit
Tests automatiquesUnitaires + Intégration
Feedback rapide< 10 minutes idéalement
Fix immédiatBuild cassé = priorité #1
attention

Un build cassé bloque toute l'équipe. Le corriger est la priorité absolue. Pas de "je verrai plus tard".

Pipeline CI typique

Avantages de CI

  • Détection précoce des bugs
  • Réduction des conflits de merge
  • Code toujours dans un état déployable
  • Feedback rapide aux développeurs
  • Confiance dans le code

🔝 Retour à la table des matières



3 - Livraison Continue (CD)

Extension de CI

La livraison continue étend CI en s'assurant que le code peut être déployé à tout moment.

Environnements

EnvironnementUsage
DevelopmentTests locaux, expérimentation
Testing/QATests automatisés, validation
StagingMiroir de production, tests finaux
ProductionUtilisateurs réels

Pratiques clés

  • Déploiements identiques : même processus pour tous les environnements
  • Configuration externalisée : variables d'environnement
  • Database migrations : versionnées et automatisées
  • Feature flags : activer/désactiver les fonctionnalités

🔝 Retour à la table des matières



4 - Déploiement Continu

Au-delà de la livraison

Le déploiement continu supprime la validation manuelle : chaque changement validé va automatiquement en production.

Prérequis

PrérequisRaison
Tests exhaustifsFilet de sécurité
Monitoring robusteDétection rapide
Rollback automatiqueRécupération rapide
Feature flagsContrôle de l'exposition
Culture de qualitéResponsabilité partagée
danger

Le déploiement continu sans tests exhaustifs est une recette pour le désastre. Assurez-vous d'avoir une couverture de tests suffisante avant de l'implémenter.

Comparaison des approches

🔝 Retour à la table des matières



5 - Anatomie d'un pipeline

Structure d'un pipeline

Exemple de fichier pipeline

GitHub Actions :

name: CI/CD Pipeline

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build

test:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test

deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to production
run: echo "Deploying..."

Jobs parallèles vs séquentiels

astuce

Parallélisez les jobs indépendants pour réduire le temps total du pipeline.

Artifacts et cache

ConceptUsage
ArtifactRésultat d'un job (JAR, image Docker)
CacheDépendances réutilisables (node_modules)
WorkspaceFichiers partagés entre jobs

🔝 Retour à la table des matières



6 - Bonnes pratiques

Les 10 commandements CI/CD

#Pratique
1Maintenir un seul repository source
2Automatiser le build
3Rendre le build auto-testant
4Commit fréquent sur mainline
5Build à chaque commit
6Garder le build rapide
7Tester dans un clone de production
8Rendre les artifacts accessibles
9Visibilité sur le processus
10Automatiser le déploiement

Pipeline rapide

remarque

Objectif : feedback en moins de 10 minutes. Au-delà, les développeurs perdent le contexte de leur changement.

Trunk-based development

Pratique recommandée :

  • Branches de courte durée (< 1 jour)
  • Merge fréquent vers main
  • Feature flags pour le code incomplet

Gestion des secrets

MéthodeExemple
Variables d'environnementGitHub Secrets
VaultHashiCorp Vault
Cloud KMSAWS Secrets Manager
danger

Ne jamais commiter de secrets dans le code. Utilisez toujours des variables d'environnement ou un gestionnaire de secrets.

🔝 Retour à la table des matières



Points clés à retenir

  • CI : intégration fréquente avec build et tests automatiques
  • Continuous Delivery : prêt à déployer, validation manuelle
  • Continuous Deployment : déploiement automatique en production
  • Un pipeline rapide (< 10 min) est essentiel
  • Les tests automatisés sont le filet de sécurité
  • Feature flags permettent de découpler déploiement et release

🔝 Retour à la table des matières


← Chapitre précédent | Chapitre suivant : Panorama des Outils →