351

我在 Jenkins 中添加了一个新工作,我想定期安排它。

Configure job,我正在检查“Build Periodically”复选框,并在Schedule文本字段中添加了表达式:

15 13 * * *

但它不会在预定时间运行。

安排工作的程序是否正确?

在此处输入图像描述

作业应该在凌晨 4:20 运行,但它没有运行。

4

10 回答 10

618

通过将调度周期设置为15 13 * * *您告诉 Jenkins 在每天第 13 小时的第 15 分钟安排构建。

Jenkins 使用了一个cron 表达式,不同的字段是:

  1. MINUTES 一小时内的分钟数 (0-59)
  2. HOURS 一天中的小时数 (0-23)
  3. DAYMONTH 一个月中的某一天 (1-31)
  4. MONTH 一年中的月份 (1-12)
  5. DAYWEEK 星期几 (0-7),其中 0 和 7 是星期日

如果您想每 5 分钟安排一次构建,这将完成这项工作:*/5 * * * *

如果您想在每天 8 点安排您的构建,这将完成这项工作:0 8 * * *

对于过去的几个版本(2014),Jenkins 有一个新参数,H(摘自Jenkins 代码文档):

为了允许定期调度的任务在系统上产生均匀的负载,H应尽可能使用符号(用于“哈希”)。

例如,使用0 0 * * *十几个日常工作会在午夜导致一个大的峰值。相比之下,usingH H * * *仍然会每天执行一次每个作业,但不是同时执行一次,更好地使用有限的资源。

另请注意:

H符号可以被认为是一个范围内的随机值,但它实际上是作业名称的散列,而不是随机函数,因此该值对于任何给定项目都保持稳定。

更多使用“H”的例子

于 2012-09-18T08:02:00.390 回答
49

格式如下:

分钟 (0-59)、小时 (0-23)、日 (1-31)、月 (1-12)、星期 (0-6)

可以插入代表单词Hash的字母 H来代替任何值。它将根据您的项目名称的哈希码计算参数。

这样一来,如果您同时在构建机器上构建多个项目,比如每天午夜,它们不会同时开始构建执行。每个项目根据其哈希码在不同的分钟开始执行。

您还可以将值指定为介于数字之间,即 H(0,30) 将返回项目的哈希码,其中可能的哈希值为 0-30。

例子:

  1. 每天早上 08:30 开始构建,周一 - 周五:30 08 * * 1-5

  2. 工作日每天构建两次,午餐时间 12:00 和午夜 00:00,周日至周四:00 0,12 * * 0-4

  3. 每天下午 4:00 - 4:59 或 16:00 -16:59 之间开始构建,具体取决于项目哈希:H 16 * * 1-5

  4. 午夜开始构建:@midnight 或每周六午夜开始构建:59 23 * * 6

  5. 每个月的第一天凌晨 2:00 - 02:30:H(0,30) 02 01 * *

于 2018-05-11T12:16:41.663 回答
46

Jenkins 允许您设置多次,以换行符分隔。

如果您需要在每天早上 7 点以及每周日下午 4 点构建它,那么下面的效果很好。

H 7 * * *

H 16 * * 0
于 2015-08-31T20:57:50.777 回答
34

*/5 * * * *表示每 5 分钟

5 * * * *表示每小时的第 5 分钟

于 2014-03-17T16:25:37.820 回答
28

在 Jenkins 中安排作业的步骤:

  1. 点击工作要求的“配置”
  2. 向下滚动到“构建触发器” - 副标题
  3. 定期点击 Build的复选框
  4. 在 Schedule 字段中添加时间表,例如:@midnight

在此处输入图像描述

注意:在计划字段下,可以看到最后和下一个日期时间运行。

Jenkins 还支持预定义的别名来安排构建:

@hourly, @daily, @weekly, @monthly,@midnight

@hourly --> 每小时开始时构建 -->0 * * * *

@daily, @midnight--> 每天午夜构建 -->0 0 * * *

@weekly--> 每周日凌晨的午夜构建 -->0 0 * * 0

@monthly--> 每个月的第一天午夜构建 -->0 0 1 * *

于 2019-06-25T14:45:25.480 回答
9

要每 5 分钟安排一次 cron 作业,您需要像这样定义 cron 设置:

*/5 * * * *
于 2012-09-18T08:06:35.667 回答
5

试试这个。

20 4 * * *

检查下面的屏幕截图

在此处输入图像描述

参考网址 - https://www.lenar.io/jenkins-schedule-build-periodically/

于 2019-11-18T05:37:16.603 回答
3

尝试使用 0 8 * * *。它应该工作

于 2013-08-23T22:20:38.273 回答
3

Jenkins 在调度上使用 Cron 格式。您可以参考此链接了解更多详情 https://en.wikipedia.org/wiki/Cron。还有一件事,Jenkins 为我们提供了一个非常有用的预览。请看一下屏幕截图。 在此处输入图像描述

我希望这会有所帮助。谢谢

于 2019-02-28T03:46:38.530 回答
1

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 在其帮助部分中提供了一些用于调度的示例。

每十五分钟(可能在 :07, :22, :37, :52):

H/15 * * * *

每小时前半段每十分钟一次(三次,可能在 :04, :14, :24):

H(0-29)/10 * * * *

每两小时一次,从每周日上午 9 点 45 分开始,到下午 3 点 45 分结束,每小时 45 分钟一次:

45 9-16/2 * * 1-5

每个工作日上午 8 点到下午 4 点之间每两小时一次(可能在上午 9 点 38 分、上午 11 点 38 分、下午 1 点 38 分、下午 3 点 38 分):

HH(8-15)/2 * * 1-5

除 12 月外,每月 1 日和 15 日每天一次:

HH 1,15 1-11 * Jenkins 还有一组别名,可以更轻松地使用公共间隔。

表格截图詹金斯别名

于 2022-01-31T14:10:55.303 回答