GitHub Actions定时任务配置完全指南:从Cron语法到实战示例
你好,我是悦创。
博客网站:https://blog.bornforthis.cn/
本教程将详细讲解如何在GitHub Actions中配置定时任务(Scheduled Tasks),帮助你掌握 Cron 表达式的编写规则和实际应用场景。
一、定时任务基础配置
1.1 核心语法结构
on:
schedule:
- cron: "分 时 日 月 周"
1.2 参数解析
组件 | 取值范围 | 说明 |
---|---|---|
分 | 0-59 | 分钟 |
时 | 0-23 | 小时(UTC时间) |
日 | 1-31 | 月份中的日期 |
月 | 1-12 或 JAN-DEC | 月份 |
周 | 0-6 或 SUN-SAT | 星期(0=周日) |
二、Cron表达式详解
2.1 特殊字符说明
符号 | 示例 | 作用 |
---|---|---|
* | * * * * * | 任意值 |
, | 0,30 * * * * | 多个值 |
- | 0-5 * * * * | 范围值 |
/ | */15 * * * * | 间隔值 |
2.2 常用配置模板
on:
schedule:
# 每5分钟(GitHub最小间隔)
- cron: "*/5 * * * *"
# 每日UTC时间0点
- cron: "0 0 * * *"
# 每周一北京时间上午8点
- cron: "0 0 * * 1"
timezone: Asia/Shanghai
# 每月1号正午执行
- cron: "0 12 1 * *"
三、高级配置技巧
3.1 时区设置
- cron: "0 8 * * *"
timezone: Asia/Shanghai # 支持IANA时区数据库格式
3.2 分支过滤
on:
schedule:
- cron: "0 0 * * *"
branches: # 限定触发的分支
- main
- release/*
3.3 多任务配置
on:
schedule:
- cron: "0 9 * * 1-5" # 工作日早9点
- cron: "0 18 * * 1-5" # 工作日晚6点
- cron: "0 12 * * 0" # 周日中午12点
四、注意事项
- 执行延迟:GitHub Actions的定时任务可能有1-10分钟的延迟
- 频率限制:
- 公共仓库:每月2000分钟免费额度
- 私有仓库:每月500分钟免费额度
- 日志查看:执行记录可在仓库的
Actions
标签页查看 - 表达式验证:推荐使用 crontab.guru 调试表达式
五、实战应用场景
5.1 自动化测试
name: Daily Test
on:
schedule:
- cron: "0 0 * * *"
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test
5.2 数据备份
name: Weekly Backup
on:
schedule:
- cron: "0 3 * * 6" # 每周六凌晨3点
jobs:
backup:
runs-on: ubuntu-latest
steps:
- name: Backup database
run: ./scripts/backup.sh
5.3 定时通知
name: Morning Reminder
on:
schedule:
- cron: "0 9 * * 1-5" # 工作日早9点
jobs:
notify:
runs-on: ubuntu-latest
steps:
- uses: actions-slack@v3
with:
payload: |
{
"text": "每日站会时间到!"
}
SEO优化提示:本文包含高频搜索关键词「GitHub Actions定时任务」「Cron配置指南」「自动化工作流」,建议在相关技术社区和博客平台发布时保留标题结构。