Aller au contenu
CI/CD & Automatisation medium

Lab 11 — Débugger un job bloqué

5 min de lecture

logo gitlab

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.

  • 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

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 workflow trop restrictive
  • comprendre pourquoi un job ne démarre jamais alors que le code est correct
  1. Basculez sur la branche du lab

    Fenêtre de terminal
    cd pipeline-craft
    git checkout starter/lab-11
  2. Déclenchez un pipeline

    Fenêtre de terminal
    git push origin starter/lab-11
  3. Ouvrez la vue pipeline

    Vous devriez observer au moins un comportement anormal (pending ou skipped).

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.

  1. Ouvrez le job pending

  2. Vérifiez les messages d’assignation runner

  3. Contrôlez les tags du job dans .gitlab-ci.yml

    my-job:
    tags:
    - docker
  4. 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.

  1. Ouvrez le .gitlab-ci.yml

  2. Relisez le bloc workflow: rules

  3. Comparez avec votre contexte réel (push, merge_request_event, tag)

    Exemple de règle trop restrictive :

    workflow:
    rules:
    - if: $CI_COMMIT_TAG

    Dans cet exemple, un push standard est skip par design. Il faut ajouter les cas attendus.

  1. Ajustez tags/rules

  2. Validez avec glab ci lint

    Fenêtre de terminal
    glab ci lint .gitlab-ci.yml
  3. Poussez et observez un run normal

    Fenêtre de terminal
    git add .gitlab-ci.yml
    git commit -m "ci: fix pending/skipped root causes"
    git push origin starter/lab-11
  • 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

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é.

  • pending et skipped sont des statuts de pilotage CI, pas des erreurs applicatives
  • Les tags runner doivent correspondre exactement
  • workflow: rules décide si le pipeline démarre
  • Une checklist simple évite les diagnostics au hasard

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