Usando cron em um workflow
Adicione um gatilho de agendamento ao arquivo do workflow: on: schedule: - cron: '30 5 * * 1-5'. A expressão usa os cinco campos de sempre (minuto, hora, dia do mês, mês, dia da semana) e precisa estar entre aspas no YAML, pois * é um caractere especial. Você pode listar várias entradas cron, e github.event.schedule informa qual delas disparou.
UTC e o limite de 5 minutos
Os agendamentos são sempre avaliados em UTC, então 0 9 * * * roda às 09:00 UTC, não no seu horário local; use a coluna de horário local da ferramenta para converter. O menor intervalo suportado pelo GitHub é de cinco minutos. Macros como @daily não são suportadas, então escreva os campos.
Atrasos e repositórios inativos
Execuções agendadas podem começar atrasadas em períodos de alta carga, principalmente na virada da hora; escolha um minuto quebrado como 17 em vez de 0 quando o horário exato não for crítico. Em repositórios públicos, workflows agendados são desativados automaticamente após 60 dias sem atividade.
Testando workflows agendados
Adicione workflow_dispatch ao lado de schedule para poder iniciar o workflow manualmente durante os testes. Lembre-se de que os agendamentos só rodam a partir da branch padrão, então mudar o cron numa branch de feature não tem efeito até o merge. Um grupo de concurrency evita que uma execução lenta se sobreponha à próxima.
Perguntas frequentes
- Qual fuso horário o cron do GitHub Actions usa?
- Sempre UTC. Não há como mudar, então converta seu horário local para UTC ao escrever a expressão.
- Um workflow pode rodar a cada minuto?
- Não. O intervalo mínimo é de cinco minutos; agendamentos mais frequentes rodam no máximo a cada cinco minutos.
- Por que meu workflow agendado não rodou na hora?
- Jobs agendados entram em fila e podem atrasar sob alta carga, além de rodarem só na branch padrão. Workflows de repositórios públicos inativos também são pausados.
- Posso usar @daily no GitHub Actions?
- Não. Use os cinco campos equivalentes, por exemplo 0 0 * * *.