Aller au contenu principal

CI/CD

Progression

#CI/CD

L’intégration continue valide chaque changement par des builds et des tests reproductibles. La livraison continue rend chaque artefact déployable à tout moment; le déploiement continu automatise l’atterrissage en production derrière des garde‑fous. On privilégie un tronc unique, des petites PR et des pipelines rapides qui donnent un signal clair.

Un bon pipeline cache les secrets, produit des artefacts versionnés et publie des rapports de qualité. Il sépare build et déploiement, mais garde une trace de bout en bout: quel commit tourne où, avec quels paramètres et quelles ressources. Les stratégies de déploiement progressif, comme le canary et le blue/green, réduisent le risque en exposant graduellement le trafic et en facilitant le retour arrière.

#Animation: étapes d’un pipeline sain

1
Build
Install, compile, produire un artefact immuable
2
Test
Unitaires, intégration, lint, sécurité
3
Publier
Pousser l’artefact (registry, stockage)
4
Déployer
Staging → canary → prod
5
Observer
Logs, métriques, alertes, traces
Dev
CI
Registry
CD
Prod
1. Push/PR → pipeline
2. Publier artefacts (image, zip)
3. Tirer artefact versionné
4. Déployer (canary/blue-green)
5. Remonter métriques/rapports
Séparer build et déploiement

Construisez une seule fois et déployez le même artefact partout. Évitez les builds différents par environnement: vous gagneriez des bugs non reproductibles.

#Animation: stratégies de déploiement

Stratégies de déploiement

Choisissez une approche (canary, blue/green, rolling) et suivez les étapes clés, les volumes de trafic et les garde-fous.

Déployer graduellement une nouvelle version sur un faible pourcentage de trafic, avec métriques serrées.

Garde-fous critiques

  • SLO erreur < 1 %
  • Latence p95 < +10 %
  • Pas de régressions dans les dashboards business

Indicateurs

  • Temps total≈ 1 h
  • Rollbackinstantané via flag/proxy
  • AutomationGitOps + analyse métriques

#Exemple: pipeline GitHub Actions minimal

yamlyaml
1name: ci2on:3  push: { branches: [ main ] }4  pull_request:5jobs:6  build-and-test:7    runs-on: ubuntu-latest8    steps:9      - uses: actions/checkout@v410      - uses: actions/setup-node@v411        with: { node-version: '20' }12      - run: npm ci13      - run: npm test -- --reporter=junit --reporter-options output=reports/junit.xml14      - run: npm run build