
Quand un job est rouge, vous avez des logs. Quand un job reste en pending ou qu’un pipeline apparaît skipped, c’est plus déroutant : parfois il n’y a presque aucun indice visible. Ce lab vous donne une méthode de diagnostic fiable pour ces deux cas fréquents.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Diagnostiquer un job bloqué en
pending - Diagnostiquer un pipeline
skipped - Lire les indices utiles dans l’interface GitLab
- Corriger les causes les plus fréquentes
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »En environnement réel, ces incidents arrivent souvent juste avant une mise en production. Le stress monte parce que le pipeline n’avance pas, mais personne ne sait pourquoi. Sans méthode claire, l’équipe perd du temps à relancer des pipelines inutiles.
Ce lab vous sert pour :
- identifier un tag runner mal configuré
- détecter une règle
workflowtrop restrictive - comprendre pourquoi un job ne démarre jamais alors que le code est correct
Prérequis
Section intitulée « Prérequis »- Lab 10 — Rapports qualité terminé
- Avoir lu Debug pending et Debug skip
Point de départ
Section intitulée « Point de départ »-
Basculez sur la branche du lab
Fenêtre de terminal cd pipeline-craftgit checkout starter/lab-11 -
Déclenchez un pipeline
Fenêtre de terminal git push origin starter/lab-11 -
Ouvrez la vue pipeline
Vous devriez observer au moins un comportement anormal (
pendingouskipped).
Le problème
Section intitulée « Le problème »Deux symptômes différents demandent deux diagnostics différents.
Un job pending signifie généralement que GitLab n’a trouvé aucun runner compatible (tags, disponibilité, quota). Un pipeline skipped vient souvent des rules ou du workflow qui ne matchent pas la source courante.
L’exercice
Section intitulée « L’exercice »Étape 1 — Traiter un job pending
Section intitulée « Étape 1 — Traiter un job pending »-
Ouvrez le job pending
-
Vérifiez les messages d’assignation runner
-
Contrôlez les tags du job dans
.gitlab-ci.ymlmy-job:tags:- docker -
Vérifiez qu’un runner actif possède ce tag
Dans GitLab : Settings > CI/CD > Runners. Si aucun runner n’a le tag requis, le job restera pending indéfiniment.
Étape 2 — Traiter un pipeline skipped
Section intitulée « Étape 2 — Traiter un pipeline skipped »-
Ouvrez le
.gitlab-ci.yml -
Relisez le bloc
workflow: rules -
Comparez avec votre contexte réel (
push,merge_request_event,tag)Exemple de règle trop restrictive :
workflow:rules:- if: $CI_COMMIT_TAGDans cet exemple, un push standard est skip par design. Il faut ajouter les cas attendus.
Étape 3 — Corriger puis valider
Section intitulée « Étape 3 — Corriger puis valider »-
Ajustez tags/rules
-
Validez avec
glab ci lintFenêtre de terminal glab ci lint .gitlab-ci.yml -
Poussez et observez un run normal
Fenêtre de terminal git add .gitlab-ci.ymlgit commit -m "ci: fix pending/skipped root causes"git push origin starter/lab-11
Vérification
Section intitulée « Vérification »- Le job pending est pris par un runner
- Le pipeline n’est plus skipped de façon inattendue
- Les règles couvrent les sources de pipeline attendues
- La correction est reproductible sur un nouveau push
Pièges fréquents
Section intitulée « Pièges fréquents »Un job pending n’est pas un job cassé. C’est un job en attente de runner. Chercher une erreur applicative dans le code ne sert donc à rien à ce stade. Il faut d’abord résoudre l’assignation runner.
Pour skipped, le piège est de penser à un bug GitLab. Dans la majorité des cas, c’est le comportement voulu par vos règles, même si vous ne l’aviez pas anticipé.
À retenir
Section intitulée « À retenir »pendingetskippedsont des statuts de pilotage CI, pas des erreurs applicatives- Les tags runner doivent correspondre exactement
workflow: rulesdécide si le pipeline démarre- Une checklist simple évite les diagnostics au hasard