from: https://www.jenkins.io/doc/book/pipeline/syntax/#cron-syntax
以下内容为根据Jenkins官方文档cron表达式部分翻译过来,使用机翻加个人理解补充内容,包括举例。
目录
介绍
Jenkins cron 语法遵循 cron 实用程序的语法(有细微差别)。具体来说,每行由 5 个由 TAB 或空格分隔的字段组成:
分钟 小时 日 月 一周中的第几日
要为一个字段指定多个值,可以使用以下运算符。按照优先顺序,
*
指定所有有效值
M-N
指定一个值范围
M-N/X
或 */X
以 X
为间隔步进通过指定范围或整个有效范围
A,B,...,Z
枚举多个值
H
表示有效值范围内任意一个时间点
为了允许定期调度的任务在系统上产生均匀的负载,应尽可能使用符号 H
(“哈希”)。例如,对十几个日常Job使用 0 0 * * *
将导致午夜出现大幅峰值。相比之下,使用 H H * * *
仍会每天执行每个Job一次,但不是同时执行所有Job,更好地利用有限的资源。
H
符号可以与范围一起使用。例如,H H(0-7) * * *
表示 12:00 AM(午夜)到 7:59 AM 之间的某个时间。您还可以将步长间隔与H
一起使用,带或不带范围。
H
符号可以被认为是一定范围内的随机值,但它实际上是Job名称的哈希值,而不是随机函数,因此该值对于任何给定项目都保持稳定。
请注意,对于月份字段,由于月份长度可变,*/3
或 H/3
等短周期在大多数月末附近不会一致工作。例如,*/3
将在长月的第 1 天、第 4 天、…第 31 天运行,然后在下个月的第二天运行。哈希值始终选择在 1-28 范围内,因此 H/3
将在月底的运行之间产生 3 到 6 天的间隙。较长的周期也会有不一致的长度,但效果可能相对不太明显。
空行和以 # 开头的行将作为注释被忽略。 此外,还支持@yearly
、@annually
、@monthly