GitHub Actions 里写了一个定时任务,本来想每天早上执行,结果总是差几个小时,或者偶尔没有准点开始。
这种情况先别去改服务器时区,也不用反复改 runner。更常见的原因是 schedule 里的 cron 时区没有看清楚。
如果只写 cron,GitHub Actions 默认按 UTC 来算。比如想按北京时间每天 9:10 运行,可以先换算成 UTC 1:10:
on:
schedule:
- cron: '10 1 * * *' 现在官方文档也支持在计划任务里写 IANA 时区。想直接按上海时间写,可以这样:
on:
schedule:
- cron: '10 9 * * *'
timezone: 'Asia/Shanghai' 还有一个容易忽略的点:不要都卡在整点跑。GitHub 官方说明,高负载时段可能导致定时任务延迟,整点附近尤其常见。能接受的话,把时间写成 10、17、43 这类非整点分钟,会更稳一点。
如果任务完全不触发,再检查三件事:第一,workflow 文件必须在默认分支;第二,定时任务会跑默认分支上的最新提交;第三,公开仓库长时间没有活动时,计划任务可能被自动停用。
GitHub 官方文档说明,schedule 使用 POSIX cron 语法,默认 UTC,可选 IANA timezone,最短间隔是 5 分钟;同时也提示高负载时可能延迟或丢弃排队任务。参考:Events that trigger workflows - schedule。
最后提醒两点:第一,定时任务不是实时调度器,不适合要求秒级准点的工作;第二,涉及线上发布、扣费、删除数据这类操作时,最好保留手动触发入口和日志通知。




留言评论
暂无留言