Aller au contenu
CI/CD & Automatisation medium

Fondamentaux GitLab CI/CD

12 min de lecture

Ce volet vous rend capable d'écrire et déboguer un pipeline GitLab CI/CD complet. En 16 modules, vous passez de « je ne sais pas ce qu'est un stage » à « je sais structurer un pipeline propre, gérer les variables, contrôler l'exécution avec rules, publier des images et packages, activer les scanners de sécurité, et surtout déboguer quand ça ne marche pas ».

Pas de théorie abstraite : chaque concept est rattaché à un cas d'usage réel. Vous apprenez à poser les bonnes questions, utiliser les bons mots-clés YAML, et résoudre les problèmes avant qu'ils n'arrivent en production.

Ce volet s'adresse à trois profils :

Le débutant motivé, Vous n'avez jamais écrit de .gitlab-ci.yml. Vous savez que GitLab peut « lancer des tests automatiquement », mais vous ne savez pas par où commencer. Vous voulez comprendre la logique avant de copier-coller des exemples.

Le dev qui subit la CI, Vous modifiez parfois le pipeline de votre projet, mais dès qu'un job reste « pending » ou « skip », vous êtes bloqué. Vous savez que le problème est « quelque part dans le YAML », mais vous ne savez pas où chercher.

L'ops qui veut structurer ses connaissances, Vous avez appris GitLab CI/CD sur le tas, en dépannant des pipelines cassés. Vous voulez combler les trous, comprendre les mécanismes sous-jacents, et avoir une méthodologie de débogage systématique.

Ces dix objectifs sont écrits sous forme de gestes, pas de connaissances. C'est volontaire : sur un pipeline, savoir ce qu'est un stage ne sert à rien tant qu'on ne sait pas dire pourquoi le job n'a pas démarré. Les deux derniers points (déboguer « pending » et « skip ») sont ceux qui font gagner le plus de temps au quotidien, et ce sont aussi ceux qui demandent d'avoir compris tous les précédents.

À la fin de ce volet, vous serez capable de :

  1. Structurer un .gitlab-ci.yml : stages, jobs, scripts, avec les bonnes pratiques.
  2. Comprendre les runners : savoir pourquoi un job s'exécute sur telle machine, avec tels tags.
  3. Gérer artifacts et cache : stocker les résultats, accélérer les builds, éviter les pièges.
  4. Utiliser les variables : scopes, précédence, variables CI_*, secrets protégés.
  5. Contrôler l'exécution avec rules : conditions if, changes, exists, when.
  6. Configurer les déclencheurs : push, MR, tags, schedules, manual.
  7. Utiliser les environnements : dev, staging, prod, stop actions.
  8. Générer des rapports : junit, coverage, artifacts reports.
  9. Déboguer "pending" : identifier runner absent, tags mismatch, quotas.
  10. Déboguer "skip" : comprendre workflow:rules vs rules, only/except legacy.

Vous avez déjà vu un pipeline GitLab dans l'interface web. Vous avez vu des jobs verts, rouges, ou gris. Ce volet accroche les concepts sur ces expériences : on part de ce que vous voyez (le job bloqué) pour remonter à la cause (le runner mal taggé).

La formation suit un chemin structuré :

PhaseModulesCe que vous apprenez
Bases1-6Pipeline, anatomie YAML, validation, logs, runners, artifacts/cache
Contrôle7-10Variables, rules, déclencheurs, environnements
Qualité11Rapports junit, coverage
Débogage12-13Pending, skip
Synthèse14Pipeline complet

Chaque module s'appuie sur les précédents. Vous ne verrez pas rules (module 7) avant d'avoir compris les variables (module 6).

On n'apprend pas les runners « parce que c'est au programme ». On les apprend parce qu'un job "pending" vient presque toujours d'un runner absent ou d'un tags: qui ne correspond à aucun runner disponible. On n'apprend pas workflow:rules pour la culture générale, mais parce que c'est la cause des pipelines qui ne démarrent pas du tout.

Ce premier bloc construit le vocabulaire et les réflexes de vérification. Notez l'ordre : on écrit un pipeline (module 2), on apprend à le valider avant de pousser (module 3), puis à lire un échec (module 4). Beaucoup de débutants sautent les modules 3 et 4 pour aller plus vite ; ce sont pourtant eux qui évitent les allers-retours de commits « fix ci » sur la branche.

ModuleContenuCompétence cléLab associé
1. Premiers pas avec GitLab CI/CDConcepts pipeline, stage, jobComprendre le vocabulaireAucun
2. Écrire un fichier .gitlab-ci.ymlStructure YAML, stages, jobs, scriptÉcrire un pipeline minimalLab 01
3. Valider son pipelinePipeline Editor, CI Lint, API, IDEDétecter les erreurs YAML avant pushLab 07
4. Debug : lire les logsLogs, sections, erreursComprendre pourquoi un job échoueLab 02
5. RunnersExecutors, tags, shared/specificSavoir où s'exécute un jobLab 03
6. Artefacts et cacheStockage, rétention, performanceOptimiser les buildsLab 04

Ce bloc répond à une seule question : quand un job doit-il s'exécuter, et avec quelles valeurs ? Les variables (module 7) viennent avant les rules (module 8) parce qu'une condition rules:if s'écrit presque toujours en testant une variable CI_*. Sans cette base, la syntaxe des règles reste une formule qu'on recopie sans comprendre.

ModuleContenuCompétence cléLab associé
7. Variables et secretsScopes, CI_*, protected, fileParamétrer les jobsLab 05
8. Conditions (rules)if, changes, exists, whenContrôler quand un job s'exécuteLab 06
9. DéclencheursPush, MR, tags, schedules, manualComprendre les sources de pipelineLab 08
10. Environnementsdev/staging/prod, stop actionsGérer les déploiementsAucun

Un module isolé, mais rentable : c'est celui qui fait remonter les résultats de tests dans l'interface de la merge request, au lieu de les laisser enfouis dans les logs du job. C'est la différence entre une CI que l'équipe consulte et une CI que personne ne lit.

ModuleContenuCompétence cléLab associé
11. Rapports qualitéjunit, coverage, artifacts reportsExploiter les résultats de testsLab 10
ModuleContenuCompétence cléLab associé
12. Dépannage "pending"Runner absent, tags, quotasDébloquer un jobLab 11
13. Dépannage "skip"workflow:rules, rules, only/exceptComprendre pourquoi ça ne démarre pasLab 11

Ce module n'apporte aucune notion nouvelle : il vous fait assembler tout le volet en un seul .gitlab-ci.yml complet, avec une checklist de mise en production. C'est le meilleur révélateur des notions comprises à moitié, et le pipeline obtenu vous servira de modèle de départ sur vos propres projets.

ModuleContenuCompétence cléLab associé
14. Synthèse : pipeline completMini-capstone, checklist prodAssembler tout ce que vous avez apprisAucun

Ces deux modules sortent du pipeline pour s'intéresser à ce qu'il produit et à ce qu'il laisse passer. Le module 15 couvre la construction et la publication d'images sans mode privilégié ; le module 16 branche les scanners GitLab (SAST, Secret Detection, Dependency et Container Scanning) pour que les vulnérabilités remontent dans la merge request plutôt qu'en production.

ModuleContenuCompétence cléLab associé
15. Registries GitLabContainer Registry, Package Registry, Dependency Proxy, BuildahConstruire et publier images et packagesLab 09
16. Scanners de sécuritéSAST, DAST, Secret Detection, Dependency/Container ScanningDétecter les vulnérabilités dans la MRAucun

Rythme : 2 à 3 modules par semaine. Chaque module demande 20 à 45 minutes de lecture + pratique.

Pratique systématique : Après chaque module, créez un repo de test et écrivez le YAML correspondant. Un concept non pratiqué est un concept oublié.

Prise de notes : Gardez une « cheatsheet » personnelle avec les mots-clés YAML et les patterns que vous découvrez. Elle vous servira en dépannage.

Les seize cartes ci-dessous suivent l'ordre pédagogique du volet, pas l'ordre alphabétique. Si vous démarrez de zéro, suivez-les de gauche à droite. Si vous venez chercher une réponse précise, les trois cartes de débogage (Debug : lire les logs, Debug pending, Debug skip) sont autonomes et se lisent sans le reste.

Chaque lab est un exercice guidé à faire sur votre propre projet de test, après la lecture du module correspondant. Le premier onglet couvre ce volet, le second anticipe la suite du parcours : n'y allez pas tant que les labs 01 à 11 ne sont pas terminés, ils supposent acquis tout ce qui précède. Certains modules n'ont pas de lab, ce sont les modules de vocabulaire et de synthèse.

ModuleLab
2. Écrire un fichier .gitlab-ci.ymlLab 01
3. Valider son pipelineLab 07
4. Debug : lire les logsLab 02
5. RunnersLab 03
6. Artefacts et cacheLab 04
7. Variables et secretsLab 05
8. Conditions (rules)Lab 06
9. DéclencheursLab 08
11. Rapports qualitéLab 10
12. Dépannage "pending"Lab 11
13. Dépannage "skip"Lab 11
15. Registries GitLabLab 09

Vous aurez un pipeline de référence que vous pourrez adapter à vos projets. Ce pipeline inclura :

  • Une structure claire (stages logiques, jobs bien nommés)
  • Des variables bien scopées (projet, groupe, pipeline)
  • Des rules qui contrôlent précisément l'exécution
  • Des artifacts et cache configurés pour la performance
  • Une gestion des environnements (dev → staging → prod)
  • Des rapports de tests intégrés

Surtout, vous aurez une méthodologie de débogage : face à un job "pending", "skip" ou "failed", vous saurez exactement où chercher.

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn