
Vous poussez votre .gitlab-ci.yml, le pipeline échoue avec une erreur de syntaxe, vous corrigez, vous re-poussez… et nouvelle erreur. Cette boucle frustrante est évitable : GitLab fournit plusieurs outils pour valider votre configuration avant le commit.
Ce guide vous présente 5 méthodes, de la plus simple (interface web) à la plus avancée (exécution locale). Choisissez celle qui correspond à votre workflow.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »À la fin de ce module, vous saurez :
- Utiliser le Pipeline Editor pour visualiser et valider votre pipeline
- Utiliser le CI Lint pour vérifier la syntaxe YAML
- Valider depuis VS Code avec l'extension GitLab Workflow
- Tester un job localement avant de le pousser
Prérequis
Section intitulée « Prérequis »Avant de continuer, assurez-vous de maîtriser :
- Écrire un fichier .gitlab-ci.yml, structure stages/jobs/script
Le problème : le cycle "push → erreur → fix → push"
Section intitulée « Le problème : le cycle "push → erreur → fix → push" »Sans validation locale, voici ce qui se passe typiquement :
1. Vous modifiez .gitlab-ci.yml2. git add . && git commit -m "fix pipeline" && git push3. Pipeline échoue : "jobs config should contain at least one visible job"4. Vous corrigez5. git add . && git commit -m "fix pipeline v2" && git push6. Pipeline échoue : "invalid YAML syntax"7. ...Résultat : 5 commits pour une modification qui aurait pu être validée en 10 secondes.
Les outils de validation permettent de détecter ces erreurs avant le push, vous économisez du temps, des commits inutiles, et surtout de la frustration.
Méthode 1 : Pipeline Editor (recommandé)
Section intitulée « Méthode 1 : Pipeline Editor (recommandé) »Le Pipeline Editor est l'outil le plus pratique pour travailler sur votre .gitlab-ci.yml. Il combine édition, validation et visualisation en une seule interface.

-
Ouvrir le Pipeline Editor
Dans votre projet GitLab, allez dans : Build → Pipeline editor
Vous voyez votre fichier
.gitlab-ci.ymlactuel (ou un template si le fichier n'existe pas encore). -
Modifier votre configuration
L'éditeur offre de l'autocomplétion et de la coloration syntaxique pour le YAML GitLab CI/CD.
À chaque frappe, GitLab valide automatiquement la syntaxe. Les erreurs apparaissent en temps réel.
-
Visualiser le pipeline
Cliquez sur l'onglet "Visualize" pour voir la représentation graphique de votre pipeline :
- Les stages et leur ordre
- Les jobs dans chaque stage
- Les dépendances (
needs)

C'est particulièrement utile quand vous utilisez les DAG et le parallélisme.
-
Voir la configuration complète (merged)
L'onglet "View merged YAML" (ou "Full configuration") affiche la configuration après résolution de tous les
include.C'est indispensable quand vous utilisez des templates : vous voyez exactement ce que GitLab va exécuter.
-
Valider et committer
Le bouton "Validate" vérifie :
- La syntaxe YAML
- Les références aux jobs (extends, needs)
- Les noms de stages
Si tout est valide, vous pouvez committer directement depuis l'interface.
Méthode 2 : CI Lint (interface web)
Section intitulée « Méthode 2 : CI Lint (interface web) »Le CI Lint est un validateur standalone, utile quand vous voulez tester un bout de YAML sans toucher à votre fichier actuel.
-
Accéder au CI Lint
Dans votre projet : Build → Pipelines puis cliquez sur "CI lint" (en haut à droite).
Alternative : accédez directement à l'URL
https://gitlab.com/<votre-projet>/-/ci/lint -
Coller votre configuration
Collez le contenu de votre
.gitlab-ci.ymldans la zone de texte. -
Valider
Cliquez sur "Validate". GitLab affiche :
- ✅
Syntax is correctsi tout va bien - ❌
Syntax is incorrectavec le détail des erreurs
- ✅
-
Simuler l'exécution (optionnel)
Cochez la case "Simulate a pipeline created for the default branch" pour une validation plus poussée.
La simulation évalue votre configuration comme si un pipeline
pushétait créé sur la branche par défaut. Elle vérifie :- Les
ruleset conditions (dans ce contexte précis) - Les variables prédéfinies disponibles
- Les références aux jobs
⚠️ Cela ne simule pas les autres contextes (MR, schedule, web trigger, etc.).
- Les
Exemple de validation
Section intitulée « Exemple de validation »Configuration avec erreur :
stages: - build - test
build: stage: build script: npm run build
test: stage: test script: npm test needs: ["inexistant-job"] # ❌ Ce job n'existe pasRésultat du CI Lint :
Syntax is incorrect
'test' job needs 'inexistant-job' job, but it was not added to the pipelineMéthode 3 : Extension VS Code (GitLab Workflow)
Section intitulée « Méthode 3 : Extension VS Code (GitLab Workflow) »Pour ceux qui développent dans VS Code, l'extension GitLab Workflow permet de valider sans quitter l'éditeur.
-
Installer l'extension
Dans VS Code, cherchez et installez : GitLab Workflow (éditeur : GitLab)
-
Configurer l'accès
Créez un Personal Access Token (PAT) dans GitLab :
- Allez dans User Settings → Access Tokens
- Créez un token avec les scopes :
api,read_user
Dans VS Code, ouvrez la palette de commandes (
Ctrl+Shift+P) et tapez :GitLab: Set GitLab Personal Access Token- Entrez l'URL de votre GitLab (ex:
https://gitlab.com) - Collez votre token
-
Valider votre fichier
Ouvrez votre
.gitlab-ci.yml, puis :- Palette de commandes (
Ctrl+Shift+P) GitLab: Validate GitLab CI/CD Configuration
L'extension envoie le fichier à l'API GitLab et affiche le résultat.
- Palette de commandes (
Fonctionnalités bonus de l'extension
Section intitulée « Fonctionnalités bonus de l'extension »L'extension GitLab Workflow offre aussi :
- Vue des pipelines : voir le statut des pipelines en cours
- Vue des issues et MR : gérer les tickets sans quitter VS Code
- Liens rapides : cliquer sur l'icône GitLab ouvre la page du projet
Méthode 4 : API GitLab (pour l'automatisation)
Section intitulée « Méthode 4 : API GitLab (pour l'automatisation) »L'API permet de valider programmatiquement, utile pour :
- Scripts de pre-commit
- Pipelines de vérification
- Outils personnalisés
Valider via curl
Section intitulée « Valider via curl »# Variables d'environnement (à définir avant)# export GITLAB_TOKEN="glpat-xxxxxxxxxxxx"GITLAB_URL="https://gitlab.com"PROJECT_ID="12345" # ou chemin encodé: "group%2Fproject"
# Envoyer le fichier pour validationcurl --request POST \ --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --header "Content-Type: application/json" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/ci/lint" \ --data "{\"content\": $(cat .gitlab-ci.yml | jq -Rs .)}"
# Pour obtenir aussi le merged YAML (avec résolution des includes)curl --request POST \ --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --header "Content-Type: application/json" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/ci/lint" \ --data "{\"content\": $(cat .gitlab-ci.yml | jq -Rs .), \"include_merged_yaml\": true}"Réponse en cas de succès :
{ "valid": true, "merged_yaml": "...", "errors": [], "warnings": []}Réponse en cas d'erreur :
{ "valid": false, "errors": ["jobs config should contain at least one visible job"], "warnings": []}Script de pre-commit
Section intitulée « Script de pre-commit »Créez un hook Git qui valide avant chaque commit :
#!/bin/bashif [ -f ".gitlab-ci.yml" ]; then echo "Validation du pipeline GitLab..."
RESULT=$(curl -s --request POST \ --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ --header "Content-Type: application/json" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/ci/lint" \ --data "{\"content\": $(cat .gitlab-ci.yml | jq -Rs .)}")
VALID=$(echo $RESULT | jq -r '.valid')
if [ "$VALID" != "true" ]; then echo "❌ Pipeline invalide :" echo $RESULT | jq -r '.errors[]' exit 1 fi
echo "✅ Pipeline valide"fiMéthode 5 : Debug local avec gitlab-runner (avancé)
Section intitulée « Méthode 5 : Debug local avec gitlab-runner (avancé) »Cette méthode est utile pour :
- Déboguer un script complexe sans pousser
- Tester sans consommer les minutes CI/CD
- Développer hors-ligne
Installer gitlab-runner
Section intitulée « Installer gitlab-runner »Téléchargez le binaire depuis gitlab-runner-downloads pour votre OS.
Linux (exemple) :
curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64chmod +x gitlab-runnersudo mv gitlab-runner /usr/local/bin/Exécuter un job localement
Section intitulée « Exécuter un job localement »# Exécuter le job "build" avec l'executor Dockergitlab-runner exec docker buildExemple avec variables :
gitlab-runner exec docker build \ --env CI_COMMIT_REF_SLUG="main" \ --env CI_PROJECT_NAME="mon-projet"Alternative : gitlabci-local (outil Python)
Section intitulée « Alternative : gitlabci-local (outil Python) »L'outil gitlabci-local offre une meilleure expérience pour l'exécution locale :
# Installationpip install gitlabci-local
# Lancer le menu interactifgitlabci-local
# Lancer tout le pipelinegitlabci-local -p
# Lancer un job spécifiquegitlabci-local "build"
# Mode debug (conserve le conteneur)gitlabci-local "build" --debugWorkflow recommandé
Section intitulée « Workflow recommandé »-
Développement quotidien, Validez avec l'extension VS Code ou le CI Lint avant de committer
-
Pipeline avec templates/includes, Utilisez le Pipeline Editor pour voir le merged YAML (configuration finale)
-
Automatisation, Intégrez l'API lint dans un hook pre-commit ou un job CI de vérification
Quelle méthode choisir ?
Section intitulée « Quelle méthode choisir ? »| Situation | Méthode recommandée |
|---|---|
| Modification rapide dans GitLab | Pipeline Editor |
| Développement quotidien | Extension VS Code |
| Vérifier un snippet YAML | CI Lint |
| Automatiser la validation | API GitLab |
| Déboguer un script complexe | gitlab-runner exec ou gitlabci-local |
Pour la plupart des développeurs, la combinaison Pipeline Editor + Extension VS Code couvre 95% des besoins.
Erreurs fréquentes
Section intitulée « Erreurs fréquentes »1. "jobs config should contain at least one visible job"
Section intitulée « 1. "jobs config should contain at least one visible job" »Cause : Tous vos jobs sont "cachés" (commencent par .) ou exclus par les rules.
Solution : Assurez-vous d'avoir au moins un job sans point au début du nom et sans rules qui l'exclut toujours.
2. "unknown key" ou "invalid property"
Section intitulée « 2. "unknown key" ou "invalid property" »Cause : Typo dans un mot-clé YAML, ou utilisation d'une propriété qui n'existe pas.
Solution : Vérifiez l'orthographe dans la référence YAML GitLab CI/CD.
3. "needs 'job' was not added to the pipeline"
Section intitulée « 3. "needs 'job' was not added to the pipeline" »Cause : Un job référencé dans needs n'existe pas ou est exclu par ses rules.
Solution : Vérifiez que le job existe et que ses rules ne l'excluent pas dans le contexte actuel.
4. Je ne vois pas la configuration finale avec mes includes
Section intitulée « 4. Je ne vois pas la configuration finale avec mes includes »Cause : Vous utilisez le CI Lint standalone sans demander le merged YAML.
Solution : Utilisez le Pipeline Editor → View merged YAML pour voir la configuration après résolution de tous les include.
À retenir
Section intitulée « À retenir »- Pipeline Editor = outil #1 pour la plupart des cas (validation + visualisation + commit)
- CI Lint = validation rapide d'un snippet sans toucher au fichier
- Extension VS Code = validation sans quitter l'éditeur
- API GitLab = automatisation (pre-commit hooks, scripts)
- gitlab-runner exec = test d'un job isolé (mais pas de pipeline complet)
- View merged YAML = indispensable quand vous utilisez des templates
On passe à la pratique
Section intitulée « On passe à la pratique »Appliquez ce workflow de validation dans le Lab 07, Valider pipeline.
Testez vos connaissances
Section intitulée « Testez vos connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications