Utiliser cron dans un workflow
Ajoutez un déclencheur planifié à votre fichier de workflow : on: schedule: - cron: '30 5 * * 1-5'. L’expression utilise les cinq champs habituels (minute, heure, jour du mois, mois, jour de la semaine) et doit être entre guillemets en YAML, car * est un caractère spécial. Vous pouvez lister plusieurs entrées cron ; github.event.schedule indique laquelle s’est déclenchée.
UTC et la limite de 5 minutes
Les planifications sont toujours évaluées en UTC : 0 9 * * * s’exécute à 09:00 UTC, pas à votre heure locale ; servez-vous de la colonne heure locale de l’outil pour convertir. L’intervalle le plus court accepté par GitHub est de cinq minutes. Les macros comme @daily ne sont pas prises en charge : écrivez les champs.
Retards et dépôts inactifs
Les exécutions planifiées peuvent démarrer en retard en période de forte charge, surtout à l’heure pile : choisissez une minute impaire comme 17 plutôt que 0 si l’heure exacte n’est pas critique. Dans les dépôts publics, les workflows planifiés sont désactivés automatiquement après 60 jours sans activité.
Tester les workflows planifiés
Ajoutez workflow_dispatch à côté de schedule pour pouvoir lancer le workflow à la main pendant vos tests. Les planifications ne s’exécutent que depuis la branche par défaut : modifier le cron sur une branche de fonctionnalité n’a aucun effet avant la fusion. Un groupe concurrency empêche une exécution lente de chevaucher la suivante.
Questions fréquentes
- Quel fuseau horaire utilise le cron de GitHub Actions ?
- Toujours l’UTC. Ce n’est pas modifiable : convertissez votre heure locale en UTC en écrivant l’expression.
- Un workflow peut-il s’exécuter chaque minute ?
- Non. L’intervalle minimal est de cinq minutes ; les planifications plus fréquentes s’exécutent au plus toutes les cinq minutes.
- Pourquoi mon workflow planifié n’a-t-il pas démarré à l’heure ?
- Les tâches planifiées sont mises en file d’attente et peuvent être retardées en cas de charge, et elles ne s’exécutent que sur la branche par défaut. Les workflows des dépôts publics inactifs sont aussi suspendus.
- Puis-je utiliser @daily dans GitHub Actions ?
- Non. Utilisez les cinq champs équivalents, par exemple 0 0 * * *.