5

一个需要大约三个小时才能完成的构建需要安排在办公时间以外的夜间构建:不早于 22:00 并且不迟于第二天 3:59。

我还想使用“H 符号”来避免与未来的夜间构建发生冲突。来自 Jenkins 的在线帮助:

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

(如何)我可以使用 Jenkins 安排这个吗?我尝试过的都被詹金斯认为是无效的:

  • H H(22,23,0,1,2,3) * * *

    无效输入:“HH(22,23,0,1,2,3) * * *”:第 1:7 行:期待“-”,找到 ','

  • H H22,23,0,1,2,3 * * *

    无效输入:“H H22,23,0,1,2,3 * * *”:第 1:4 行:意外令牌:22

  • H H(22-3) * * *

    无效输入:“HH(22-3) * * *”:第 1:9:1 行是无效值。必须在 1 和 -18 之间

不使用插件是否可以实现这一点?

4

2 回答 2

8

我认为你会得到最接近的是使用:

  • H H(0-3) * * *这将在 0:00 到 3:59 之间的某个时间点运行
  • @midnight这将在 0:00 到 2:59 之间的某个时间点运行

H(4-8) 结构仅在第二项大于第一项时才有效。

但你不妨自己填写小时。詹金斯实际上永远不会更改作业运行的时间。一旦您保存作业并始终在该特定时间运行作业,它基本上会创建一些随机时间。

当然,您也可以提交错误报告或功能请求,您应该能够将其指定为H(22-3)或更好,修复代码并提交补丁;)

于 2013-06-20T02:07:26.677 回答
2

没有直接支持这样编写表达式,由于有时区支持(现在),您可以解决这个问题。

# DONT COPY PASTE - THIS DOESNT WORK!
# This is what we would like to write, but is not supported
H H(22-3) * * *

上面的表达式意味着我们想要在下午 22 点到凌晨 3 点之间进行构建,这是一个 5 小时的时间段,所以我们可以这样写:

# Assuming we're in GMT+2 we can just shift the timezone
# so 22-03 becomes 10-15 wich is 12 hours earlier so the
# timezone is GMT-10
TZ=Etc/GMT-10
H H(10-15) * * *

我在JENKINS-18313的评论中找到了这个解决方法

更新:

当前存在错误JENKINS-57702并且未正确评估时区 GMT-XX。一种解决方法是使用等效的时区,在此示例中为夏威夷时区:

TZ=US/Hawaii
H H(10-15) * * *
于 2019-04-26T07:59:00.793 回答