DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesGitLab CI : rules, cache et pipelines DAG04 - Créer un pipeline DAG avec needs

Détails

  • 20 minutes
  • Intermédiaire

Objectifs

  • Utiliser needs pour créer des dépendances directes entre jobs
  • Accélérer le pipeline en évitant l'attente entre stages
  • Configurer needs artifacts true pour transmettre des artefacts
  • Visualiser le graphe DAG dans GitLab
Module GitLab CI : rules, cache et pipelines DAG

Exercice 04 : Créer un pipeline DAG avec needs

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Utiliser needs: pour créer des dépendances directes entre jobs sans attendre tout un stage
  • ✅ Réduire la durée totale du pipeline grâce au DAG (Directed Acyclic Graph)
  • ✅ Transmettre des artefacts entre jobs liés via needs: artifacts: true
  • ✅ Visualiser le graphe de dépendances dans GitLab CI/CD → Pipelines

Durée estimée : 20 minutes

Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)

Prérequis :

  • Module GitLab CI Intermédiaire - Exercice 03 complété
  • Compréhension des stages et artefacts GitLab CI

📖 Contexte

Sans needs:, tous les jobs d'un stage doivent terminer avant que le stage suivant démarre. Avec needs:, un job peut démarrer dès que ses dépendances directes sont terminées, même si d'autres jobs du stage précédent tournent encore. C'est le principe du DAG : chaque job avance au rythme de ses vraies dépendances.


📋 Énoncé

Créez un pipeline avec deux chaînes de builds indépendantes (frontend et backend) qui convergent vers un job de déploiement. Sans needs:, le déploiement attendrait les builds les plus lents. Avec needs:, il démarre dès que les deux builds sont terminés.


🧭 Déroulement de l'exercice

Tâche 1 : Comprendre le problème sans needs

Créez d'abord un pipeline "classique" sans needs: avec 3 stages : build, test, deploy. Dans le stage build, créez deux jobs : build-frontend (sleep 10) et build-backend (sleep 5). Dans le stage test, créez test-frontend (sleep 3) et test-backend (sleep 2).

Indice : Sans needs:, test-frontend et test-backend attendent que build-frontend ET build-backend soient terminés. Le stage test ne démarre qu'après 10 secondes (durée du plus lent des builds).

Vérification : Observez dans le pipeline que test-backend attend inutilement build-frontend.


Tâche 2 : Ajouter needs pour les jobs de test

Ajoutez needs: à test-frontend pour qu'il dépende uniquement de build-frontend, et needs: à test-backend pour qu'il dépende uniquement de build-backend.

Indice :

`yaml

test-backend:

stage: test

needs:

- build-backend

script:

- sleep 2

`

Avec needs:, test-backend peut démarrer après 5 secondes (fin de build-backend), sans attendre les 10 secondes de build-frontend.

Vérification : Dans le graphe DAG, les flèches montrent les vraies dépendances. test-backend démarre avant build-frontend soit terminé.


Tâche 3 : Transmettre des artefacts via needs

Dans build-frontend, produisez un artefact dist/frontend.js. Dans test-frontend, ajoutez artifacts: true dans la déclaration needs: pour accéder à cet artefact.

Indice :

`yaml

test-frontend:

needs:

- job: build-frontend

artifacts: true

script:

- ls dist/ # accès à l'artefact de build-frontend

`

Sans artifacts: true, needs: crée seulement une dépendance d'ordre. Avec artifacts: true, les artefacts du job cible sont également téléchargés.

Vérification : test-frontend liste correctement dist/frontend.js dans ses logs.


Tâche 4 : Créer le job de déploiement convergent

Créez un job deploy qui dépend à la fois de test-frontend ET test-backend. Il doit récupérer les artefacts des deux jobs.

Indice :

`yaml

deploy:

stage: deploy

needs:

- job: test-frontend

artifacts: true

- job: test-backend

artifacts: true

`

deploy démarre dès que les deux tests sont terminés, sans attendre d'autres jobs.

Vérification : deploy liste les artefacts des deux chaînes dans ses logs.


Tâche 5 : Visualiser le graphe DAG

Dans GitLab, naviguez vers CI/CD → Pipelines → votre pipeline. Activez la vue "Needs" ou "DAG" (bouton en haut à droite). Comparez la vue "Stage" et la vue "DAG".

Indice : La vue DAG montre le graphe de dépendances réel avec des flèches entre les jobs. La vue Stage montre les colonnes traditionnelles. Sur un pipeline complexe, la différence de durée peut être de 30 à 50%.

Vérification : Le graphe DAG affiche deux chaînes indépendantes qui convergent vers deploy.


🗂️ Mini-Projet : Pipeline DAG frontend + backend

Structure DAG :

build-frontend ──→ test-frontend ──┐
                                    ├──→ deploy
build-backend  ──→ test-backend  ──┘

Checkpoints de validation :

  • test-backend démarre avant la fin de build-frontend
  • Les artefacts de build-frontend sont accessibles dans test-frontend
  • Le job deploy récupère les artefacts des deux chaînes
  • La vue DAG dans GitLab affiche les flèches de dépendance
  • La durée totale du pipeline est réduite par rapport à la version sans needs:

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Comprendre le problème sans needs
  • Tâche 2 : Ajouter needs pour les jobs de test
  • Tâche 3 : Transmettre des artefacts via needs
  • Tâche 4 : Créer le job de déploiement convergent
  • Tâche 5 : Visualiser le graphe DAG
  • 🗂️ Mini-Projet : Pipeline DAG frontend + backend