Usar cron en un flujo de trabajo
Añade un disparador programado a tu archivo de flujo: on: schedule: - cron: '30 5 * * 1-5'. La expresión usa los cinco campos habituales (minuto, hora, día del mes, mes y día de la semana) y debe ir entre comillas en YAML porque * es un carácter especial. Puedes listar varias entradas cron y github.event.schedule indica cuál se disparó.
UTC y el límite de 5 minutos
Las programaciones se evalúan siempre en UTC, así que 0 9 * * * se ejecuta a las 09:00 UTC, no en tu hora local; usa la columna de hora local de la herramienta para traducirla. El intervalo más corto que admite GitHub es de cinco minutos. Las macros como @daily no están soportadas, así que escribe los campos.
Retrasos y repositorios inactivos
Las ejecuciones programadas pueden empezar tarde en momentos de alta carga, sobre todo a las horas en punto, así que elige un minuto impar como 17 en lugar de 0 si la hora exacta no es crítica. En repositorios públicos, los flujos programados se desactivan automáticamente tras 60 días sin actividad.
Probar flujos programados
Añade workflow_dispatch junto a schedule para poder lanzar el flujo a mano mientras lo pruebas. Recuerda que las programaciones solo se ejecutan desde la rama predeterminada, así que un cambio de cron en una rama de funcionalidad no tiene efecto hasta fusionarse. Un grupo de concurrency evita que una ejecución lenta se solape con la siguiente.
Preguntas frecuentes
- ¿Qué zona horaria usa el cron de GitHub Actions?
- Siempre UTC. No se puede cambiar, así que convierte tu hora local a UTC al escribir la expresión.
- ¿Puede un flujo ejecutarse cada minuto?
- No. El intervalo mínimo es de cinco minutos; las programaciones más frecuentes se ejecutan como mucho cada cinco minutos.
- ¿Por qué mi flujo programado no se ejecutó a tiempo?
- Los trabajos programados se encolan y pueden retrasarse con carga alta, y solo se ejecutan en la rama predeterminada. Los flujos de repositorios públicos inactivos también se pausan.
- ¿Puedo usar @daily en GitHub Actions?
- No. Usa los cinco campos equivalentes, por ejemplo 0 0 * * *.