Monitoring GitHub Actions

Surveillez efficacement vos workflows CI/CD sur GitHub

GitHub Actions est devenu la solution CI/CD de référence pour des millions de développeurs. Intégrée nativement à GitHub, elle permet d'automatiser les builds, tests, déploiements et bien plus encore. Cependant, la surveillance de ces workflows automatisés présente des défis uniques que les notifications GitHub natives ne couvrent pas entièrement.

Un problème majeur concerne les workflows planifiés (schedule) : GitHub désactive automatiquement les schedules sur les repositories inactifs depuis plus de 60 jours. Vos backups quotidiens, synchronisations, ou tâches de maintenance peuvent s'arrêter silencieusement sans aucune notification. Les échecs partiels dans les matrices de jobs sont aussi difficiles à suivre.

MoniTao complète GitHub Actions en ajoutant une couche de monitoring heartbeat externe. En intégrant un simple step curl dans vos workflows, vous êtes alerté instantanément si un workflow planifié ne s'exécute pas ou échoue, indépendamment des notifications GitHub.

Types de déclencheurs GitHub Actions

GitHub Actions offre de nombreux types de déclencheurs. Le monitoring heartbeat est particulièrement utile pour les workflows planifiés.

  • schedule : exĂ©cution selon une syntaxe cron (UTC). IdĂ©al pour backups, syncs quotidiennes, nettoyages. C'est ce type qui nĂ©cessite le plus de surveillance externe.
  • push/pull_request : dĂ©clenchement sur Ă©vĂ©nement Git. La surveillance heartbeat est moins pertinente car il y a toujours une activitĂ© humaine associĂ©e.
  • workflow_dispatch : dĂ©clenchement manuel depuis l'interface GitHub. Utile pour les tâches Ă  la demande.
  • repository_dispatch : dĂ©clenchement par webhook externe. Permet de lier GitHub Actions Ă  d'autres systèmes.

Défis spécifiques à GitHub Actions

Les workflows GitHub Actions présentent des défis de surveillance uniques.

  • DĂ©sactivation automatique : GitHub dĂ©sactive les schedules sur les repos inactifs depuis 60 jours. Vos crons critiques peuvent s'arrĂŞter sans aucune alerte.
  • Échecs partiels (matrix) : dans une matrix de jobs, certains peuvent Ă©chouer tandis que d'autres rĂ©ussissent. Difficile Ă  suivre sans monitoring dĂ©diĂ©.
  • Concurrency limits : un workflow peut ĂŞtre en attente indĂ©finiment si les limites de concurrence sont atteintes.
  • Secrets expirĂ©s : un secret manquant ou expirĂ© peut faire Ă©chouer silencieusement un workflow qui fonctionnait avant.

Stratégies d'intégration heartbeat

Plusieurs approches permettent d'intégrer le monitoring MoniTao dans vos workflows GitHub Actions.

  • Step curl final : ajoutez un step curl en fin de job avec if: success(). Simple et efficace pour la plupart des cas d'usage.
  • Action HTTP personnalisĂ©e : utilisez une action comme fjogeleit/http-request-action pour plus de flexibilitĂ© (headers, body, etc.).
  • Job dĂ©diĂ© : crĂ©ez un job final avec needs: [job1, job2, ...] qui ne s'exĂ©cute que si tous les jobs prĂ©cĂ©dents rĂ©ussissent.
  • Secret pour l'URL : stockez l'URL MoniTao en secret pour Ă©viter de l'exposer dans le code du workflow.

Exemple de workflow avec heartbeat

Voici un exemple complet de workflow GitHub Actions avec monitoring heartbeat intégré :

name: Daily Backup
on:
  schedule:
    - cron: "0 2 * * *"  # 2h00 UTC chaque jour
  workflow_dispatch:     # Déclenchement manuel possible

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

      - name: Run backup script
        run: ./scripts/backup.sh
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

      - name: Notify MoniTao success
        if: success()
        run: curl -fsS "${{ secrets.MONITAO_URL }}"

      - name: Notify MoniTao failure
        if: failure()
        run: curl -fsS "${{ secrets.MONITAO_URL }}/fail?msg=Backup+failed"

Le secret MONITAO_URL contient votre URL de ping. Le step "success" est exécuté uniquement si le backup réussit. Le step "failure" notifie explicitement les échecs avec un message.

Configuration des alertes

Configurez vos alertes MoniTao pour couvrir les différents scénarios d'échec GitHub Actions.

  • Workflow non dĂ©clenchĂ© : aucun ping reçu Ă  l'heure prĂ©vue. Peut indiquer un schedule dĂ©sactivĂ© ou un repo devenu inactif.
  • Échec explicite : le workflow a envoyĂ© un ping /fail. Consultez les logs du workflow sur GitHub pour identifier la cause.
  • DurĂ©e excessive : le workflow prend plus de temps que d'habitude. Peut indiquer un problème de ressources ou une rĂ©gression.
  • Échecs rĂ©pĂ©tĂ©s : plusieurs exĂ©cutions consĂ©cutives ont Ă©chouĂ©. Investigation urgente requise.

Checklist GitHub Actions

  • Workflows critiques (schedule) identifiĂ©s
  • Heartbeat MoniTao ajoutĂ© avec if: success()
  • Secret MONITAO_URL configurĂ© dans les settings
  • Step d'Ă©chec explicite ajoutĂ© avec if: failure()
  • Test manuel avec workflow_dispatch effectuĂ©
  • Commit rĂ©cent pour maintenir le repo actif

Questions fréquentes sur GitHub Actions

Mon workflow schedule ne s'exécute plus depuis plusieurs semaines. Pourquoi ?

GitHub désactive automatiquement les schedules sur les repositories inactifs depuis plus de 60 jours. Pour réactiver, faites un commit (même vide) ou déclenchez manuellement le workflow via workflow_dispatch.

Comment stocker l'URL MoniTao de façon sécurisée ?

Allez dans Settings > Secrets and variables > Actions > New repository secret. Nommez-le MONITAO_URL et utilisez ${{ secrets.MONITAO_URL }} dans votre workflow.

Mon workflow a plusieurs jobs parallèles. Comment pinger seulement si tous réussissent ?

Créez un job final avec needs: [job1, job2, job3]. Ce job ne s'exécutera que si tous les jobs listés réussissent. Ajoutez le ping heartbeat dans ce job final.

Est-ce que MoniTao peut surveiller les PR qui arrivent de façon imprévisible ?

Le monitoring heartbeat est conçu pour les workflows à fréquence connue. Pour les PR, utilisez les notifications GitHub natives ou les intégrations Slack/email de GitHub.

Comment voir pourquoi mon workflow a échoué ?

Sur GitHub, allez dans l'onglet Actions, sélectionnez le workflow run en échec, et consultez les logs de chaque step. Le step en rouge montre l'erreur.

Puis-je utiliser MoniTao avec des GitHub Actions self-hosted runners ?

Oui, tant que le runner a accès à Internet pour appeler l'URL MoniTao. Si votre runner est isolé, configurez un proxy ou une sortie réseau vers api.monitao.com.

Conclusion

GitHub Actions est un outil puissant pour l'automatisation, mais ses workflows planifiés nécessitent une surveillance externe. La désactivation automatique des schedules sur les repos inactifs peut avoir des conséquences critiques si vos backups ou syncs s'arrêtent silencieusement.

En combinant GitHub Actions avec le monitoring heartbeat de MoniTao, vous obtenez une visibilité complète sur vos workflows automatisés. Commencez par vos workflows schedule critiques et maintenez votre repository actif pour éviter la désactivation.

PrĂŞt Ă  dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.