← Tous les guides

Guide · CI/CD

Surveiller GitHub Actions

Un workflow planifié qui cesse de se déclencher ressemble à un mardi tranquille : GitHub Actions ne renvoie aucune erreur, aucune notification, rien dans l'onglet Actions qui mérite d'être remarqué. Un check-in depuis le workflow transforme ce silence en alerte.

1. Créez un check

Dans Mortemain, créez un check correspondant au planning cron de votre workflow, avec une fenêtre de tolérance qui couvre la file d'attente des runners GitHub (les workflows planifiés peuvent démarrer plusieurs minutes en retard quand la plateforme est chargée, et GitHub désactive complètement le planning sur les dépôts sans activité depuis 60 jours). Copiez l'URL de ping du check.

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

Ajoutez une dernière étape qui ne s'exécute que si toutes les étapes précédentes ont réussi, et qui fait le check-in vers l'URL de ping :

 .github/workflows/nightly-sync.yml
name: Synchro nocturne

on:
  schedule:
    - cron: '0 3 * * *'
  workflow_dispatch:

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Exécuter la synchro
        run: ./scripts/sync.sh

      - name: Ping Mortemain (succès)
        if: success()
        run: curl -fsS -m 10 https://ping.mortemain.com/votre-uuid-de-check

Les fichiers de workflow des dépôts publics sont visibles par tout le monde. Si cela pose problème, stockez l'URL comme secret du dépôt plutôt que de la coder en dur, puis référencez ${{ secrets.MORTEMAIN_PING_URL }} dans la ligne run:.

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

Ajoutez une deuxième étape protégée par if: failure(), qui fait le check-in vers la même URL suffixée de /fail. Cela indique à Mortemain que l'exécution a eu lieu mais a échoué, ce qui déclenche une alerte immédiate au lieu d'attendre l'expiration de la fenêtre du check :

 .github/workflows/nightly-sync.yml
      - name: Ping Mortemain (échec)
        if: failure()
        run: curl -fsS -m 10 https://ping.mortemain.com/votre-uuid-de-check/fail

4. Chronométrez l'exécution avec un ping de démarrage (optionnel)

Ajoutez une étape avant le vrai travail qui fait le check-in vers /start. Mortemain mesure alors la durée de chaque exécution et peut signaler celle qui prend nettement plus de temps que d'habitude, utile pour repérer un job bloqué sur une dépendance qui ne répond plus :

 .github/workflows/nightly-sync.yml
      - name: Ping Mortemain (démarrage)
        run: curl -fsS -m 10 https://ping.mortemain.com/votre-uuid-de-check/start

      - name: Exécuter la synchro
        run: ./scripts/sync.sh

Testez

Déclenchez le workflow manuellement depuis l'onglet Actions (workflow_dispatch) et regardez le check passer actif. Puis faites échouer une étape exprès, un code de sortie 1 suffit, et confirmez que l'alerte d'échec arrive immédiatement plutôt qu'après l'expiration de la fenêtre de tolérance.