我在 Jenkins 中添加了一个新工作,我想定期安排它。
从Configure job,我正在检查“Build Periodically”复选框,并在Schedule文本字段中添加了表达式:
15 13 * * *
但它不会在预定时间运行。
安排工作的程序是否正确?
作业应该在凌晨 4:20 运行,但它没有运行。
通过将调度周期设置为15 13 * * *
您告诉 Jenkins 在每天第 13 小时的第 15 分钟安排构建。
Jenkins 使用了一个cron 表达式,不同的字段是:
如果您想每 5 分钟安排一次构建,这将完成这项工作:*/5 * * * *
如果您想在每天 8 点安排您的构建,这将完成这项工作:0 8 * * *
对于过去的几个版本(2014),Jenkins 有一个新参数,H
(摘自Jenkins 代码文档):
为了允许定期调度的任务在系统上产生均匀的负载,
H
应尽可能使用符号(用于“哈希”)。例如,使用
0 0 * * *
十几个日常工作会在午夜导致一个大的峰值。相比之下,usingH H * * *
仍然会每天执行一次每个作业,但不是同时执行一次,更好地使用有限的资源。
另请注意:
该
H
符号可以被认为是一个范围内的随机值,但它实际上是作业名称的散列,而不是随机函数,因此该值对于任何给定项目都保持稳定。
格式如下:
分钟 (0-59)、小时 (0-23)、日 (1-31)、月 (1-12)、星期 (0-6)
可以插入代表单词Hash的字母 H来代替任何值。它将根据您的项目名称的哈希码计算参数。
这样一来,如果您同时在构建机器上构建多个项目,比如每天午夜,它们不会同时开始构建执行。每个项目根据其哈希码在不同的分钟开始执行。
您还可以将值指定为介于数字之间,即 H(0,30) 将返回项目的哈希码,其中可能的哈希值为 0-30。
例子:
每天早上 08:30 开始构建,周一 - 周五:30 08 * * 1-5
工作日每天构建两次,午餐时间 12:00 和午夜 00:00,周日至周四:00 0,12 * * 0-4
每天下午 4:00 - 4:59 或 16:00 -16:59 之间开始构建,具体取决于项目哈希:H 16 * * 1-5
午夜开始构建:@midnight 或每周六午夜开始构建:59 23 * * 6
每个月的第一天凌晨 2:00 - 02:30:H(0,30) 02 01 * *
Jenkins 允许您设置多次,以换行符分隔。
如果您需要在每天早上 7 点以及每周日下午 4 点构建它,那么下面的效果很好。
H 7 * * *
H 16 * * 0
*/5 * * * *
表示每 5 分钟
5 * * * *
表示每小时的第 5 分钟
在 Jenkins 中安排作业的步骤:
@midnight
注意:在计划字段下,可以看到最后和下一个日期时间运行。
Jenkins 还支持预定义的别名来安排构建:
@hourly
, @daily
, @weekly
, @monthly
,@midnight
@hourly
--> 每小时开始时构建 -->0 * * * *
@daily, @midnight
--> 每天午夜构建 -->0 0 * * *
@weekly
--> 每周日凌晨的午夜构建 -->0 0 * * 0
@monthly
--> 每个月的第一天午夜构建 -->0 0 1 * *
要每 5 分钟安排一次 cron 作业,您需要像这样定义 cron 设置:
*/5 * * * *
尝试使用 0 8 * * *。它应该工作
Jenkins Job Scheduling Syntax 首先,让我们看一下 Jenkins 作业调度配置。它看起来很像 Linux 的 cron 语法,但您不必熟悉命令行 Linux 就可以理解它。
一个调度条目由五个空格分隔的字段组成。您可以通过添加多个条目来安排多次作业。
熟悉的星号 * 表示所有有效值。因此,每天运行的作业在第三个字段中有一个 *。
破折号分隔值的范围。例如,从上午 9:00 到下午 5:00 每小时运行的作业将在第二个字段中显示 9-17。
间隔用斜杠 / 指定。每 15 分钟运行一次的作业在第一个字段中具有 H/15。请注意,第一个字段中的 H 具有特殊含义。如果您希望作业每 15 分钟运行一次,您可以将其配置为 0/15,这将使其在每小时开始时运行。但是,如果您以这种方式配置太多作业,您可能会使 Jenkins 控制器过载。最终,H 告诉 Jenkins 根据作业名称的散列选择一分钟。
最后,您可以使用逗号指定多个值。因此,周一、周三和周五运行的作业将在第五个字段中有 1,3,5。
Jenkins 在其帮助部分中提供了一些用于调度的示例。
H/15 * * * *
H(0-29)/10 * * * *
45 9-16/2 * * 1-5
HH(8-15)/2 * * 1-5
HH 1,15 1-11 * Jenkins 还有一组别名,可以更轻松地使用公共间隔。