RousselTMLEARNING

Article · DevOps : de la découverte à l'expertise

CI/CD (1/5) : principes et anatomie d'un pipeline

1. CI, CD et CD #

Trois pratiques, souvent confondues.

Définitions #

CI, livraison continue, déploiement continu
La différence entre livraison et déploiement continus est la mise en production automatique.
PratiqueDéfinitionCondition
Intégration continue (CI)chaque modification est intégrée à la branche principale, construite et testée automatiquement, plusieurs fois par jourtests automatisés rapides, branches courtes
Livraison continue (Continuous Delivery)chaque version qui passe le pipeline est déployable en production à tout moment, en un clicdéploiement automatisé et reproductible
Déploiement continu (Continuous Deployment)chaque version qui passe le pipeline part automatiquement en productionconfiance totale dans les tests, déploiements progressifs, retour arrière automatique

La CI répond à « mon code s'intègre-t-il avec celui des autres ? », la livraison continue à « puis-je livrer maintenant ? », le déploiement continu supprime la question.

Pourquoi c'est rentable #

  • Des lots plus petits : chaque déploiement change peu de choses, donc casse peu et se diagnostique vite.
  • Un retour rapide : un développeur apprend en minutes qu'il a cassé quelque chose, pas en semaines.
  • Un processus reproductible : la mise en production devient un non-événement.
  • Des métriques DORA meilleures : fréquence de déploiement, délai, taux d'échec et temps de restauration.

2. Anatomie d'un pipeline #

Les étapes du commit à la production.

Les étapes #

Étapes d'un pipeline CI/CD
Les premières étapes doivent être les plus rapides : on échoue tôt.
ÉtapeContenuDurée cible
Commit stagecompilation, tests unitaires, lint, analyse statique, détection de secrets< 10 min
Packageconstruction d'un artefact unique et versionné (image, binaire, paquet)quelques minutes
Tests d'acceptationtests d'intégration et de bout en bout sur un environnement éphémère ou de staging< 30 min
Déploiementpromotion du même artefact vers staging puis productionminutes
Vérificationsmoke tests, analyse des métriques, retour arrière automatique si dégradationminutes

Les briques techniques #

NotionRôle
Déclencheurpush, pull request, tag, planification, déclenchement manuel
Runner / agentmachine (souvent un conteneur éphémère) qui exécute les jobs
Job / étapeunité de travail ; les jobs d'un même stage tournent en parallèle
Cachedépendances réutilisées d'un build à l'autre pour gagner du temps
Artefactrésultat produit par un job et transmis aux suivants ou publié
Environnementcible de déploiement (staging, production) avec ses secrets et ses règles d'approbation
Secretsidentifiants injectés au moment de l'exécution, jamais écrits dans le dépôt

3. Les principes fondamentaux #

Ce qui rend un pipeline fiable.

Build once, deploy many #

On construit l'artefact une seule fois, on lui donne une version immuable (le SHA du commit), et c'est ce même artefact qui est testé puis promu de staging en production. Reconstruire pour la production, c'est déployer quelque chose qui n'a jamais été testé.

Erreur Courante : Une image taguée latest ou reconstruite par environnement casse la traçabilité : impossible de savoir exactement ce qui tourne en production ni de revenir à la version précédente.

Les autres règles #

  1. Pipeline as code : la définition du pipeline est versionnée avec le code (.github/workflows, .gitlab-ci.yml, Jenkinsfile).
  2. Échouer vite : les contrôles rapides d'abord, les plus longs ensuite.
  3. Le pipeline rouge est prioritaire : on répare (ou on annule le commit) avant de continuer.
  4. Configuration externe : l'artefact est identique partout, seule la configuration change (variables, secrets, 12 facteurs).
  5. Reproductibilité : versions d'outils et de dépendances figées, runners éphémères.
  6. Tout passe par le pipeline, y compris les correctifs urgents : sinon le pipeline cesse d'être la source de vérité.

4. Un premier pipeline #

La même logique avec deux outils.

GitHub Actions #

# .github/workflows/ci.yml
name: ci
on:
  push: { branches: [main] }
  pull_request: {}
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.12", cache: pip }
      - run: pip install -r requirements.txt
      - run: pytest -q
  build:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t app:${{ github.sha }} .

GitLab CI #

# .gitlab-ci.yml
stages: [test, build]
test:
  stage: test
  image: python:3.12
  script:
    - pip install -r requirements.txt
    - pytest -q
build:
  stage: build
  image: docker:27
  services: [docker:27-dind]
  rules: [{ if: '$CI_COMMIT_BRANCH == "main"' }]
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
Suite du chapitre : Les quatre leçons suivantes détaillent chaque partie : intégration continue et tests, artefacts et environnements, stratégies de déploiement, puis outils.

📄 CI/CD de bout en bout (1/5) : principes et anatomie d'un pipeline →

Mon suivi

  • ⏱ Durée estimée : ≈ 9 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Glossaire de la formation

DevOps

Culture, mouvement et pratiques visant à unifier le développement logiciel (Dev) et l'administration des infrastructures informatiques (Ops).Découvrir...

DevSecOps

Intégration native de la sécurité (Security) dès la conception et tout au long du cycle de vie DevOps (approche "Shift-Left").Voir comment intégrer la...

AIOps (Artificial Intelligence for IT Operations)

Utilisation de l'intelligence artificielle et de l'apprentissage automatique pour automatiser et améliorer les opérations informatiques (ex: détection...

NoOps

Concept où l'environnement informatique est tellement automatisé et abstrait (ex: Serverless, PaaS) qu'il ne nécessite quasiment plus d'équipe opérati...

GitOps

Pratique de déploiement continu où un dépôt Git sert de source unique de vérité déclarative pour l'infrastructure et les applications.Maîtriser le dép...

FinOps (Financial Operations)

Culture de responsabilité financière du Cloud visant à maximiser la valeur métier en optimisant les coûts. Elle permet une collaboration étroite entre...

SRE (Site Reliability Engineering)

Discipline qui applique les principes de l'ingénierie logicielle aux problématiques d'exploitation. Le but est de créer des systèmes hautement scalabl...

Platform Engineering

Discipline consistant à concevoir et construire des chaînes d'outils et des flux de travail permettant aux développeurs de gérer leur infrastructure e...

Articles recommandés

Mur de la confusion

Le 'mur de la confusion' (ou 'wall of confusion') est une métaphore souvent utilisée dans le cont...

Soutien Logistique Intégré

Soutien Logistique Intégré (SLI) (L'Integrated Logistics Support (ILS) en anglais), est une appro...

Application 12 Facteurs

Un guide détaillé sur la méthodologie des 12 facteurs pour le développement d'applications modern...

Le framework CALMS : Les 5 piliers du DevOps

Découvrez le framework CALMS, le socle indispensable pour réussir votre transformation DevOps à t...

Bonnes pratiques DevOps : culture, CI/CD, infrastructure as code et mesure

Bonnes pratiques DevOps : culture et collaboration, intégration et livraison continues, trunk-bas...

Tests de charge avec Grafana k6 : pourquoi et quels types de tests

Pourquoi tester la performance avant la production, les types de tests (smoke, charge, stress, pi...

Écrire des scripts k6 : requêtes, vérifications, scénarios et exécuteurs

La structure d'un script k6 (init, setup, default, teardown), les requêtes HTTP, les checks, les ...

Seuils, métriques et résultats d'un test k6

Lire le résumé d'un test k6, comprendre les métriques intégrées (http_req_duration, http_req_fail...

Observer un test k6 : Prometheus, Grafana et corrélation avec le système testé

Envoyer les résultats de k6 dans Prometheus (remote write) ou en OpenTelemetry, les visualiser da...