← Tous les guides

Guide · CI/CD

Surveiller GitLab CI avec un interrupteur homme mort

Les emails de pipeline de GitLab vous préviennent quand un job échoue, mais pas quand le pipeline ne tourne plus du tout : une planification en pause, un runner qui a discrètement disparu, un déclencheur cron cassé. Un check-in attrape les deux cas, car il alerte sur le silence, pas seulement sur un événement d'échec.

1. Créez un check

Créez un check dans Mortemain, réglez sa planification sur celle de votre pipeline (ou de son déclencheur planifié), et copiez l'URL de ping :

 votre URL de ping
https://ping.mortemain.com/your-check-uuid

2. Faites le check-in en cas de succès depuis after_script

after_script s'exécute après chaque job du pipeline, y compris ceux qui ont échoué, donc protégez l'appel avec CI_JOB_STATUS pour ne faire le check-in que si tout s'est bien passé :

 .gitlab-ci.yml
build:
  stage: build
  script:
    - ./run-build.sh
  after_script:
    - # $CI_JOB_STATUS vaut "success" ou "failed" ici
    - if [ "$CI_JOB_STATUS" = "success" ]; then
        curl -fsS -m 10 https://ping.mortemain.com/your-check-uuid
      fi

Vous préférez une étape finale dédiée ? Ajoutez un petit job qui ne s'exécute qu'une fois que tout le reste a réussi :

 .gitlab-ci.yml
stages:
  - build
  - test
  - notify

heartbeat:
  stage: notify
  image: curlimages/curl:latest
  script:
    - curl -fsS -m 10 https://ping.mortemain.com/your-check-uuid

3. Alertez immédiatement en cas d'échec

Ajoutez un job qui ne s'exécute que si une étape précédente échoue, et faites-lui appeler l'URL /fail. Mortemain alerte immédiatement au lieu d'attendre que le check reste silencieux :

 .gitlab-ci.yml
notify_failure:
  stage: notify
  image: curlimages/curl:latest
  script:
    - curl -fsS -m 10 https://ping.mortemain.com/your-check-uuid/fail
  rules:
    - when: on_failure

4. Couvrez les pipelines planifiés

Si ce pipeline tourne via un Scheduled pipeline (CI/CD → Schedules), réglez la période de votre check sur le même intervalle. Si la planification est mise en pause, si un tag de runner ne correspond plus, ou si le planificateur de GitLab lui-même se bloque, pas d'exécution veut dire pas de ping, et Mortemain alerte une fois la fenêtre de grâce dépassée. Vous voulez mesurer la durée du pipeline ? Appelez …/your-check-uuid/start en toute première étape et Mortemain calculera la durée entre cet appel et le ping de succès.

Testez

Lancez le pipeline une fois (Run pipeline ou un push) et vérifiez que le check passe actif. Puis cassez volontairement un job et vérifiez que le job d'échec envoie bien le ping /fail et que l'alerte arrive immédiatement.