Aller au contenu
CI/CD & Automatisation medium

Volet 2 : Industrialisation des pipelines

8 min de lecture

logo gitlab

Vous avez un pipeline fonctionnel ? Maintenant, faites-le évoluer. Ce volet vous apprend à créer des pipelines maintenables, réutilisables et performants, indispensable quand vous gérez plusieurs projets ou équipes.

Ce volet suppose que vous maîtrisez le Volet 1 : Fondamentaux. En particulier :

  • Structure .gitlab-ci.yml (stages, jobs, script)
  • Variables et rules
  • Artefacts et cache

Cette phase suit une portée croissante : extends et les ancres YAML factorisent à l'intérieur d'un seul .gitlab-ci.yml, include partage entre plusieurs projets, les Components publient une brique versionnée dans le catalogue GitLab. Prenez-les dans cet ordre : include sans extends produit des fichiers partagés que personne n'ose modifier, et un composant écrit avant d'avoir factorisé localement fige des duplications à l'échelle de l'organisation.

ModuleTitreObjectifLab associé
V2-01extends et anchorsFactoriser au sein d'un fichierLab 13
V2-02include et templatesPartager entre projetsLab 14
V2-03Components & CatalogCréer des composants réutilisablesAucun

Ici l'objectif change : on ne cherche plus à écrire moins de YAML, on cherche à réduire la durée du pipeline et sa consommation de minutes CI. needs casse l'exécution séquentielle par stages au profit d'un graphe de dépendances, les matrices génèrent plusieurs exécutions d'un même job, les services CI montent une base de données à côté du job plutôt que dans le script. Les trois modules se combinent, un job matriciel restant soumis aux mêmes needs que les autres.

ModuleTitreObjectifLab associé
V2-04DAG et parallélismeOptimiser avec needsLab 12
V2-05Matrices de jobsMultiplier les exécutionsLab 15
V2-06Services CI et cache avancéBases de données, Redis en CILab 12

Les trois modules répondent à une même limite : un .gitlab-ci.yml unique ne passe pas l'échelle d'un monorepo. Les pipelines parent-enfant délèguent une partie du travail à un pipeline séparé déclenché par trigger, les pipelines dynamiques génèrent le YAML enfant à l'exécution en fonction des dossiers réellement modifiés, et les déclenchements multi-projet franchissent la frontière du dépôt. Réservez cette phase aux dépôts qui hébergent plusieurs applications : sur un projet unique, elle ajoute de l'indirection sans gain.

ModuleTitreObjectifLab associé
V2-07Pipelines parent-enfantOrchestrer les monoreposLab 16
V2-08Pipelines dynamiquesGénérer selon le contexteLab 16
V2-09Multi-projet et downstreamDéclencher d'autres projetsAucun

Cette dernière phase décide quand un pipeline se déclenche et comment il se comporte quand quelque chose rate. Les workflow:rules évitent le doublon classique du pipeline de branche lancé en même temps que celui de merge request ; retry, timeout et l'idempotence des jobs séparent une vraie régression d'un échec réseau passager. Le capstone rassemble les onze modules précédents dans un pipeline unique, c'est la validation du volet.

ModuleTitreObjectifLab associé
V2-10Workflows CI/CDPatterns MR, branch, releaseLab 17
V2-11Fiabilité des pipelinesRetry, timeouts, idempotenceLab 18
V2-12Capstone industrialisationPipeline industriel completLab 19

Les douze modules ne se lisent pas dans l'ordre par obligation. Choisissez l'onglet qui correspond au symptôme que vous constatez aujourd'hui sur vos pipelines : du YAML dupliqué entre dépôts, une durée d'exécution qui dérive, ou un dépôt qui héberge plusieurs applications. Chaque parcours tient en trois modules et donne un résultat mesurable, lignes de YAML supprimées ou minutes CI économisées, avant d'attaquer le reste du volet.

Vous copiez-collez du YAML entre projets ?

  1. extends et anchors
  2. include et templates
  3. Components & Catalog

Si aucun des trois parcours ne correspond à votre situation, ouvrez extends et anchors : c'est le seul module dont les autres dépendent réellement, et il s'applique à n'importe quel .gitlab-ci.yml existant sans rien casser. Les trois autres portes d'entrée ci-dessous répondent chacune à un besoin précis, gain de durée avec needs, découpage d'un monorepo avec les pipelines enfants, ou mutualisation entre dépôts avec include.

Chaque module s'accompagne d'un lab à exécuter sur un dépôt GitLab réel : c'est là que vous voyez le pipeline s'exécuter, pas dans la page. L'onglet Fondamentaux rassemble les acquis du volet 1 dont dépendent les exercices d'industrialisation, en particulier la validation YAML avec CI Lint et le débogage d'un job resté en pending. L'onglet Industrialisation donne la correspondance module par module. Deux modules n'ont pas de lab dédié (V2-03 Components et V2-09 multi-projet) : leur mise en pratique passe par le capstone du Lab 19, qui rassemble l'ensemble du volet.

Compétence préalableLab
Validation YAML / CI LintLab 07
Débogage pending / skippedLab 11
Pipeline de base opérationnelLabs 01–11

Le volet 2 se situe entre les fondamentaux du .gitlab-ci.yml et la sécurité des pipelines. Revenez au volet 1 si rules, artifacts ou cache ne sont pas encore des réflexes : l'industrialisation multiplie ces mécanismes et une base fragile se paye au centuple. Enchaînez sur le volet 3 une fois vos pipelines factorisés, car c'est précisément la factorisation qui crée la surface d'attaque traitée là-bas, un template partagé compromis contaminant tous les projets qui l'incluent.

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