触发器触发流水线¶
为流水线配置触发器,周期性地自动触发流水线的执行。在编辑流水线时点击编辑配置
,即可配置构建触发器。
触发器类型¶
触发器类型 | 说明 |
---|---|
代码源触发器 | 在指定的时间检查代码仓库是否有变更。例如填写 H/15 * * * * 表示每隔 15 分钟系统会自动检查代码仓库是否有新提交的变更,若有新提交的变更则会执行流水线。 |
定时触发器 | 在指定的时间触发流水线,开启定时触发器后,支持直接选择预设的规则,也可以选择自定义 CRON 表达式,输入自定义触发器规则。 |
触发规则¶
触发规则语法遵循 CRON 的语法(但有细微差别)。具体来说,每行由 5 个 Tab 或空格分隔的字段组成:MINUTE HOUR DOM MONTH DOW
字段 | 说明 | 取值范围 |
---|---|---|
MINUTE | 分钟 | 0 ~ 59 |
HOUR | 小时 | 0 ~ 23 |
DOM | 天 | 1 ~ 31 |
MONTH | 月 | 1 ~ 12 |
DOW | 星期 | 1 ~ 6 代表周一至周六,0、7 代表周日 |
要为一个字段指定多个值,可以按照优先顺序使用以下运算符:
运算符 | 说明 |
---|---|
* | 表示匹配取值范围内的所有值 |
M-N | 表示指定范围内的所有值 |
M-N/X 或 */X | 表示在指定范围或整个有效范围内每隔 X 触发一次 |
A,B,...,Z | 表示匹配多个值 |
为了使定期调度的任务在系统上产生均匀的负载,应尽可能使用符号 H(代表“哈希”)。 例如,对十几个日常工作使用 0 0 * * *
将导致午夜时出现较大的峰值,可能会导致资源紧张。 相比之下,使用 H H * * *
仍然会每天执行一次每个作业,但不是同时执行一次,这样能够更好地使用有限的资源。
H 可以与范围一起使用。例如,H H(0-7) * * *
表示 00:00 到 7:59 之间的某个时间。
由于不同的月份天数不同,所以当 DOM
中出现 /3
或 H/3
等短周期时,在大多数月份结束时不会触发。 例如,*/3
将在每个月的第 1 天、第 4 天、……、第 31 天触发任务。如果下个月有 30 天,最后一次触发任务的时间为第 28 天。
另外,@yearly、@annually、@monthly、@weekly、@daily、@midnight 和 @hourly 作为方便的别名。 这些使用哈希进行自动匹配。例如,@hourly 与 H * * * *
相同,可以表示一小时内的任何时间。 @midnight 代表每天 0:00 ~ 2:59 之间的一段时间。
规则举例
规则 | 说明 |
---|---|
H/15 * * * * | 表示每隔 15 分钟触发一次,例如每小时的 07 分、22 分、37 分和 52 分 |
H(0-29)/10 * * * * | 表示在每个小时的前半小时中,每 10 分钟触发一次,例如每小时的 04 分、14 分和 24 分 |
45 9-16/2 * * 1-5 | 表示每个工作日从 9 点 45 分开始下午 15 点 45 分结束,每隔 2 小时,在第 45 分钟触发一次 |
H H(8-15)/2 * * 1-5 | 表示每个工作日从 8 点到 16 点这段时间内,每隔 2 小时之间的某刻触发一次,例如在 9:38、11:38、13:38、15:38 |
H H 1,15 1-11 | 表示每月 1 日和 15 日每天一次,除 12 月外 |