GitHub Actions 定时任务时间不对怎么办?先看时区

GitHub Actions 定时任务时区设置示意图

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 官方说明,高负载时段可能导致定时任务延迟,整点附近尤其常见。能接受的话,把时间写成 101743 这类非整点分钟,会更稳一点。

如果任务完全不触发,再检查三件事:第一,workflow 文件必须在默认分支;第二,定时任务会跑默认分支上的最新提交;第三,公开仓库长时间没有活动时,计划任务可能被自动停用。

GitHub 官方文档说明,schedule 使用 POSIX cron 语法,默认 UTC,可选 IANA timezone,最短间隔是 5 分钟;同时也提示高负载时可能延迟或丢弃排队任务。参考:Events that trigger workflows - schedule

最后提醒两点:第一,定时任务不是实时调度器,不适合要求秒级准点的工作;第二,涉及线上发布、扣费、删除数据这类操作时,最好保留手动触发入口和日志通知。

Caleb
Caleb管理员

上一篇:Windows 摄像头打不开怎么办?先检查相机权限
下一篇:已是最新的文章

留言评论

暂无留言
请先 登录 再评论,若不是会员请先 注册
取消
扫码支持