需要在詹金斯每小时安排一次工作

需要在詹金斯每小时安排一次工作

我是 Jenkins 新手。我有一份工作需要每小时安排一次。

我在用

* */1 * * * 

但其效果并不明显。

请提供任何其他解决方案。

答案1

Jenkins 使用 cron 表达式如下所述这里

要安排每小时,那么你可以把

0 * * * *

那么你的工作将每小时执行一次(07:00、08:00、09:00 等)

更新

正如您原始配置的解释,语法

* */1 * * *

每分钟将执行一次作业。

更新2

根据评论中的要求,这里每 3 小时安排一次的语法

0 */3 * * *

语法*/n意味着作业将每小时安排n一次

答案2

詹金斯建议这样:

H * * * *

答案3

我知道这是一个老话题,但我还是要回答,因为显然人们仍然在这里。

最佳答案不应再使用。

詹金斯引入了一个价值观H

此字段遵循 cron 的语法(略有不同)。具体来说,每行由 5 个字段组成,以 TAB 或空格分隔:

分钟 小时 DOM 月 道琼斯指数

  • MINUTE 一小时内的分钟数 (0–59)
  • HOUR 一天中的小时 (0–23)
  • DOM 月份中的日期 (1–31)
  • 月 月份 (1–12)
  • DOW 星期几 (0–7),其中 0 和 7 表示星期日。

要为一个字段指定多个值,可以使用以下运算符。按优先顺序,

  • *指定所有有效值
  • M-N指定值的范围
  • M-N/X*/X按 X 的间隔在指定范围或整个有效范围内进行步进
  • A,B,...,Z枚举多个值

为了让定期安排的任务在系统上产生均匀的负载,应尽可能使用符号 H(代表“哈希”)。例如,对十几个日常作业使用 0 0 * * * 会导致午夜出现大幅峰值。相比之下,使用 HH * * * 仍会每天执行一次每个作业,但不会同时执行所有作业,从而更好地利用有限的资源。

H 符号可以与范围一起使用。例如,HH(0-7) * * * 表示 12:00 AM(午夜)至 7:59 AM 之间的某个时间。您还可以将步长间隔与 H 一起使用,带或不带范围均可。

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

请注意,对于月份日期字段,由于月份长度可变,*/3 或 H/3 等短周期在大多数月份结束时不会持续工作。例如,*/3 将在长月的 1 日、4 日、……31 日运行,然后在下个月的第二天再次运行。哈希值始终在 1-28 范围内选择,因此 H/3 将在月底的运行之间产生 3 到 6 天的间隔。(较长的周期也会有不一致的长度,但影响可能相对不那么明显。)

因此,每小时建造一次的正确答案是

H * * * *

每 3 小时

H H/3 * * *

*和之间的区别H也可以解释为

  • *翻译为每一个
  • H翻译为任何

例如

* * * * *

翻译为:构建每一分钟、每小时、每月的每一天、每个月,不管是星期几。

H * * * *

翻译为:建造一次每小时 (x),无论具体是哪分钟(可以是 x:00 至 x:59 之间的任意分钟)

H H * * *

翻译为:建造一次每天,无论什么时间(可以是 00:00 至 23:59 之间的任何分钟或任何小时)


为什么你应该选择使用而不是硬编码的时间值的原因H也如前所述

如果你配置了 100 个作业

0 0 * * *

它们都会尝试同时启动,从而导致午夜出现大量轮询和拉动流量。

如果你将它们全部配置为

H H * * *

它们每天都会构建一次,但不是同时构建,而是分散在一天中。


计划时间范围

你可以使用时间范围来更好地计划日程,例如

H H(18-23) * * *

所有作业将在每天 18:00 至 23:59 之间的任何时间进行构建。


计划时间范围跨越午夜

甚至可以安排跨午夜的工作,例如在晚上 19​​:00 到凌晨 5:00 之间进行构建。

由于 cron 通常不允许这样做,因此您可以使用使用 shiftet 时区的技巧。

例如,我住在时区 MEZ,即 GMT+1,我想在晚上 19​​:00 到凌晨 5:00 之间构建所有作业。为了做到这一点,我使用以下方法将整个时区移动 5 小时

TZ=Etc/GMT+6

然后我使用 shiftet 范围来表示从 14:00 (-> +5 = 19:00pm) 开始到 23:59 (-> +5 = 4:59am) 结束的时间

H H(14-23) * * *

答案4

语法是:


MINUTE  Minutes within the hour (0-59)
HOUR    The hour of the day (0-23)
DOM     The day of the month (1-31)
MONTH   The month (1-12)
DOW     The day of the week (0-7) where 0 and 7 are Sunday.

如果您希望每 3 小时安排一次,语法应如下所示:

* 3 * * * *

相关内容