Aller au contenu
CI/CD & Automatisation medium

Lab 12 — Accélérer le pipeline

5 min de lecture

logo gitlab

Un pipeline lent finit par coûter cher : attente développeur, review ralentie, files runners saturées. Dans ce lab, vous optimisez les points qui apportent le plus de gains sans complexifier inutilement le YAML : cache bien clés, images allégées et parallélisme contrôlé.

  • Choisir une clé de cache stable et pertinente
  • Éviter les caches inutilisables ($CI_COMMIT_SHA)
  • Utiliser needs pour lancer des jobs en parallèle
  • Mesurer l’impact réel des optimisations

Les pipelines lents sont un problème de productivité avant d’être un problème technique. Si chaque push met 8 minutes, les développeurs poussent moins souvent et accumulent des changements plus gros, ce qui augmente le risque de conflit et d’erreur.

Ce lab répond à des cas fréquents :

  • cache jamais réutilisé à cause d’une clé trop spécifique
  • jobs indépendants bloqués par la logique de stage séquentielle
  • images trop lourdes téléchargées à chaque run
  1. Basculez sur la branche du lab

    Fenêtre de terminal
    cd pipeline-craft
    git checkout starter/lab-12
  2. Lancez un run de référence

    Fenêtre de terminal
    git push origin starter/lab-12
  3. Notez la durée du pipeline

    Cette valeur sert de baseline avant optimisation.

La lenteur vient souvent de trois causes combinées :

  • cache inexploitable
  • exécution trop séquentielle
  • images ou builds non optimisés

Vous allez corriger ces trois zones sans rendre le pipeline illisible.

  1. Remplacez une clé instable par key.files

    Mauvais exemple :

    cache:
    key: $CI_COMMIT_SHA

    Bon exemple :

    cache:
    key:
    files:
    - requirements-dev.txt
    paths:
    - .pip-cache/
  2. Vérifiez sur deux runs successifs

    Le second run doit restaurer le cache.

  1. Identifiez les jobs indépendants

    ruff-lint et pytest peuvent démarrer sans dépendance forte l’un envers l’autre.

  2. Ajoutez des needs explicites si nécessaire

    pytest:
    stage: test
    needs: []

    Cette approche active un comportement DAG et réduit l’attente artificielle liée aux stages.

  1. Confirmez l’usage de variantes allégées (python:3.12-slim)

  2. Gardez docker:27 uniquement pour les jobs qui en ont besoin

    Chaque job doit utiliser l’image minimale adaptée à son besoin.

  1. Poussez votre optimisation

    Fenêtre de terminal
    git add .gitlab-ci.yml
    git commit -m "ci: speed up pipeline with cache and dag"
    git push origin starter/lab-12
  2. Comparez la durée avec la baseline

    Vous devez observer une réduction tangible dès le second run optimisé.

  • Le cache est restauré sur un run suivant
  • Les jobs indépendants ne s’attendent plus inutilement
  • Le pipeline total est sensiblement plus court
  • Le YAML reste lisible et maintenable

Un pipeline très optimisé mais illisible devient vite un problème de maintenance. Cherchez un équilibre entre performance et clarté.

Autre piège : annoncer un gain après un seul run. Le premier run sert souvent à alimenter le cache. Mesurez au minimum sur deux à trois exécutions comparables.

  • Une bonne clé de cache change quand les dépendances changent, pas à chaque commit
  • Le DAG (needs) réduit l’attente artificielle des stages
  • Les images allégées accélèrent le pull et donc le pipeline
  • Mesurer avant/après est indispensable pour valider une optimisation

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