我在 Jenkins 中新增了一个工作,希望能够定期调度。
在配置任务页面中,勾选了“周期性构建”复选框,并在计划文本框中添加了表达式:
15 13 * * *
但是它并没有在预定的时间运行。
这是否是正确的任务定时计划流程?
该任务应该在早上4:20自动运行,但实际上未运行。
我在 Jenkins 中新增了一个工作,希望能够定期调度。
在配置任务页面中,勾选了“周期性构建”复选框,并在计划文本框中添加了表达式:
15 13 * * *
但是它并没有在预定的时间运行。
这是否是正确的任务定时计划流程?
该任务应该在早上4:20自动运行,但实际上未运行。
15 13 * * *
,您告诉Jenkins在每个月的每一天的第13小时的第15分钟安排构建。Jenkins使用cron expression,不同的字段包括:
*/5 * * * *
如果您想每天8点安排一次构建,则可以使用此命令:0 8 * * *
过去几个版本(2014年以来),Jenkins有一个新参数H
(摘自Jenkins代码文档):H
(代表“哈希”)。0 0 * * *
将导致午夜出现大量峰值。相比之下,使用H H * * *
仍会每天执行每个作业一次,但不是同时执行,更好地利用有限资源。H
符号可以被认为是范围内的随机值,但实际上它是作业名称的哈希,而不是随机函数,因此对于任何给定的项目,该值保持稳定。
更多使用“H”的示例
* */6 * * *
是否可行? - ѕтƒ格式如下:
分钟 (0-59), 小时 (0-23), 天 (1-31), 月份 (1-12), 星期几 (0-6)
可以将字母H代表单词哈希插入到任何一个值中,它将根据您项目名称的哈希代码计算参数。
这样做的目的是为了让您在同一时间在构建机器上构建多个项目时,比如每天午夜,它们不会同时开始执行构建。每个项目在不同的分钟开始执行,具体取决于其哈希码。
您还可以指定值在数字之间,例如 H(0,30) 将返回可能哈希值为 0-30 的项目的哈希代码。
示例:
每天早晨08:30开始构建,周一至周五: 30 08 * * 1-5
平日每天两次构建,分别在中午12:00和午夜00:00,周日至周四: 00 0,12 * * 0-4
每天下午晚些时候开始构建,在下午4:00 p.m. - 4:59 p.m.或16:00 -16:59之间,具体取决于项目的哈希值:H 16 * * 1-5
在午夜开始构建:@midnight 或每个星期六的午夜开始构建:59 23 * * 6
每个月的第一天在凌晨2:00 a.m. - 02:30 a.m.之间进行构建:H(0,30) 02 01 * *
Jenkins允许您设置多个时间,用换行符分隔。
如果您需要每天早上7点以及每个星期日下午4点构建项目,则以下设置很好用。
H 7 * * *
H 16 * * 0
H(0-0)
,您可以简单地使用 0
。使用 H
的优点在于,并非所有作业都会在完全相同的时间尝试运行,而是尝试获取“下一个可用的时间段”。 - derHugo*/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 * *
另一个例子,如何只在特定的一周中运行:
# Every Sunday at 19:00
0 19 * * 0
数字代表以下列表中对应的星期几:
0 = Sunday
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
如果你想知道一周有多少天,可以像这样添加逗号:
# Monday, Wednesday and Friday:
0 19 * * 1,3,5
Jenkins作业调度语法 首先,让我们来看一下Jenkins作业调度配置。它看起来很像Linux的cron语法,但你不必熟悉命令行Linux就能弄清楚它。
一个调度条目由五个由空格分隔的字段组成。您可以通过添加多个条目来安排多个时间运行作业。
熟悉的星号*表示所有有效值。因此,每天运行的作业在第三个字段中有一个*。
破折号分隔值范围。例如,每天上午9点到下午5点每小时运行一次的作业将在第二个字段中有9-17。
间隔用斜杠/指定。每15分钟运行一次的作业在第一个字段中有H/15。请注意,第一个字段中的H具有特殊含义。如果您想让作业每15分钟运行一次,可以将其配置为0/15,这将使它在每个小时的开始运行。但是,如果您以这种方式配置了太多的作业,则可能会超载Jenkins控制器。最终,H告诉Jenkins根据作业名称的哈希选择一分钟。
最后,您可以使用逗号指定多个值。因此,每周一、三和五运行的作业在第五个字段中有1,3,5。
Jenkins在其帮助部分中提供了一些调度示例。
Every fifteen minutes (perhaps at :07, :22, :37, :52):
H/15 * * * *
Every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24):
H(0-29)/10 * * * *
Once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday:
45 9-16/2 * * 1-5
Once in every two hour slot between 8 AM and 4 PM every weekday (perhaps at 9:38 AM, 11:38 AM, 1:38 PM, 3:38 PM):
H H(8-15)/2 * * 1-5
Once a day on the 1st and 15th of every month except December:
H H 1,15 1-11 *
Jenkins还具有一组别名,使使用常见的时间间隔更加容易。
*/5 * * * *
*
概念非常有帮助。 - Gunjan Paul尝试使用 0 8 * * *
。它应该可以直接使用!