Aller au contenu
CI/CD & Automatisation medium

Labs Pipeline Craft — Pratique GitLab CI/CD

11 min de lecture

logo gitlab

Les guides expliquent comment GitLab CI/CD fonctionne. Les labs vous font pratiquer. Pipeline Craft est une série de 26 exercices progressifs sur un vrai projet Python (FastAPI). Vous forkez le dépôt, vous écrivez du YAML, vous poussez, vous voyez le résultat — pipeline vert ou rouge, à vous de diagnostiquer. Chaque lab cible une compétence précise de la formation GitLab CI/CD.

  • Écrire des pipelines GitLab CI/CD de zéro sur un projet réel
  • Diagnostiquer des pipelines cassés en lisant les logs et le YAML
  • Optimiser avec cache, artifacts, DAG et parallélisme
  • Industrialiser avec templates, includes et CI/CD Components
  • Sécuriser les secrets, scanner le code et les images Docker

Les labs complètent les guides théoriques. Ils sont utiles quand :

  • Vous venez de lire un guide et voulez ancrer la compétence par la pratique
  • Vous préparez la certification GitLab CI/CD Associate et avez besoin d’exercices
  • Vous formez une équipe et cherchez des TP prêts à l’emploi
  • Vous voulez un projet fil rouge qui évolue de lab en lab

Tous les labs s’appuient sur Pipeline Craft, une API REST écrite en Python (FastAPI) avec :

  • 6 endpoints (/health, /version, /items CRUD)
  • Des tests unitaires (pytest)
  • Un linter (ruff)
  • Un Dockerfile multi-stage
  • Un script de déploiement simulé

Le code est volontairement simple — c’est le pipeline qui est au centre de chaque exercice.

Le dépôt Pipeline Craft est hébergé sur gitlab.com. Il contient le code Python de l’API et toutes les branches des labs. Le principe : vous créez votre propre copie du dépôt (un fork), puis vous travaillez sur les branches de départ de chaque lab.

Un fork crée une copie du dépôt dans votre propre espace GitLab. Vous y êtes propriétaire, vous pouvez y pousser du code et voir vos propres pipelines s’exécuter.

  1. Ouvrez le dépôt original

    Rendez-vous sur gitlab.com/Bob74/pipeline-craft.

  2. Cliquez sur Fork (bouton en haut à droite)

    Gardez les paramètres par défaut (votre namespace personnel, visibilité publique) et cliquez sur Fork project.

  3. Résultat

    Vous avez maintenant votre propre dépôt à l’adresse gitlab.com/<votre-pseudo>/pipeline-craft. C’est là que vous travaillerez pour tous les labs.

Fenêtre de terminal
# Remplacez <votre-pseudo> par votre nom d'utilisateur GitLab
git clone https://gitlab.com/<votre-pseudo>/pipeline-craft.git
cd pipeline-craft

Vous récupérez le dépôt sur votre machine. Toutes les branches sont disponibles — tapez git branch -r pour les voir.

Étape 3 — Passez sur la branche de départ du lab

Section intitulée « Étape 3 — Passez sur la branche de départ du lab »

Chaque lab a une branche starter (point de départ) et une branche solution (correction) :

Fenêtre de terminal
# Exemple pour le Lab 01
git checkout starter/lab-01

La branche starter/lab-XX contient l’état exact du projet au début du lab : parfois un pipeline cassé (Lab 02), parfois un pipeline fonctionnel mais sans optimisation (Lab 04), parfois aucun pipeline du tout (Lab 01).

Suivez les instructions du lab, modifiez les fichiers demandés, puis :

Fenêtre de terminal
git add -A
git commit -m "ci: solution lab XX"
git push origin starter/lab-XX

Allez dans Build > Pipelines sur votre projet GitLab pour voir le résultat. Pipeline vert ? Bravo, passez au lab suivant.

La branche solution/lab-XX contient la correction complète. Comparez votre travail :

Fenêtre de terminal
# Voir ce qui diffère entre votre branche et la solution
git diff starter/lab-XX..solution/lab-XX

Ou basculez directement sur la solution pour observer le résultat attendu :

Fenêtre de terminal
git checkout solution/lab-XX
gitlab.com/Bob74/pipeline-craft ← dépôt original (ne pas modifier)
▼ Fork (une seule fois)
gitlab.com/<vous>/pipeline-craft ← votre copie (vous y poussez)
▼ git clone (une seule fois)
~/pipeline-craft/ ← votre copie locale
├── git checkout starter/lab-01 ← point de départ du lab
├── … codez, committez, poussez …
└── git checkout solution/lab-01 ← correction si besoin

Du premier pipeline à un pipeline complet avec validation, registries, rapports qualité et diagnostic avancé.

LabTitreCompétenceGuide lié
01Mon premier pipelineÉcrire un .gitlab-ci.yml à 3 stagesPremier pipeline
02Lire un échecDiagnostiquer un job rouge via les logsDebug logs
03Images et runnersChoisir les bonnes images, configurer Docker-in-DockerRunners
04Artifacts et cacheTransmettre des fichiers entre jobs, accélérer le pipelineArtifacts et cache
05Sortir les secrets du codeVariables CI/CD protégées, masquage, .env.exampleVariables
06Contrôler l’exécutionrules:, workflow: rules, déploiement conditionnelRules
07Valider un pipelineglab ci lint, CI Lint UI, pré-validation localeValider un .gitlab-ci.yml
08Déclencher un pipelineSchedules, trigger tokens, API, $CI_PIPELINE_SOURCEDéclencheurs
09Publier dans le registryContainer Registry, Package Registry, tags sémantiquesRegistries
10Rapports qualitéJUnit, coverage, badge, Code Quality dans les MRRapports qualité
11Débugger un job bloquéDiagnostic pending/skipped, tags runner, workflow: rulesDebug pending, Debug skipped

Cache avancé, DRY, templates, parallélisme, DAG et pipelines parent/enfant.

LabTitreCompétenceGuide lié
12Accélérer le pipelineCache hashfiles, images slim, needs:, multi-stage DockerDAG et parallélisme, Services CI et cache
13DRY : extends et anchorsFactoriser le YAML avec extends: et ancresExtends et anchors
14Templates partagésinclude: local, project, remote, templateTemplates
15Matrices multi-versionsparallel:matrix pour tester Python 3.11/3.12Matrices
16Pipeline parent-enfanttrigger:include, pipelines dynamiquesParent-enfant, Dynamique
17Workflows branches et MRMR pipelines, merge trains, release flowWorkflows
18Fiabilité et retryretry:, timeout:, interruptible:, resource_group:Fiabilité
19Capstone industrielReconstruire un pipeline complet (cahier des charges)Synthèse pipeline, Capstone

Secrets, scanning, SBOM, branches protégées, durcissement et examen final.

LabTitreCompétenceGuide lié
20Protéger les secretsVariables protégées, masquage, rotationSecrets
21Scanner le code (SAST)SAST + Secret Detection, rapports JSONScanners sécurité
22Scanner les imagesContainer Scanning, Trivy, .trivyignoreSupply chain
23Scanner les dépendancesDependency Scanning + SBOM CycloneDXSupply chain
24Branches protégéesApproval rules, push rules, pipeline vert obligatoireBranches protégées
25Durcir un pipelineÉpinglage images, least privilege, timeouts, auditDurcissement, Audit
26Examen finalAudit + remédiation d’un pipeline vulnérableTous les volets

Chaque lab est rattaché à un guide théorique de la formation. L’idée : lire le guide, puis pratiquer dans le lab.

Les labs fonctionnent sur gitlab.com avec les runners SaaS partagés. Si vous préférez un GitLab self-managed avec vos propres runners, consultez :

Les fichiers .gitlab-ci.yml restent identiques — seule l’infrastructure d’exécution change.

  • 26 labs progressifs sur un vrai projet Python, du premier pipeline à la sécurité complète
  • Chaque lab cible une compétence précise, validable par un pipeline vert
  • Le modèle fork + branch permet de travailler à son rythme avec la solution disponible
  • Les labs complètent les guides théoriques — lisez le guide d’abord, pratiquez ensuite

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn