安排每晚 22-03 使用 Jenkins 和 H 构建,"hash symbol"



需要花费大约三个小时才能完成的构建需要安排在办公时间以外的夜间构建:不早于次日22:00,不迟于次日3:59。

我还想使用"H符号"来避免与未来的夜间构建发生冲突。From in-line help in Jenkins:

为了允许定期安排的任务在系统上产生均匀的负载,应该尽可能使用符号H(表示"哈希")。例如,在12个日常工作中使用0 0 * * *会在午夜造成很大的峰值。相比之下,使用H * * *仍然会每天执行每个作业一次,但不是同时执行所有作业,更好地使用有限的资源。

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

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

    无效输入:"H H(22、23,0,1,2,3 ) * * *": 1:7行:期待"——"发现"、"

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

    无效输入:" H22,23,0,1,2,3 * * *": line 1:4:意外的token: 22

  • H H(22-3) * * *

    无效输入:"H H(22-3) * * *":第1:9行:1为无效值。必须在1以内和-18年

是否可以在不使用插件的情况下实现这一点?

我认为你最接近的方法是使用:

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

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

但你不妨自己把这一小时填满。Jenkins实际上从未更改作业设置后的运行时间。一旦你保存了作业,它基本上会创建一个随机的小时,并且总是在那个特定的时间运行作业。

当然,你也可以提交一个bug报告或特性请求,你应该能够指定为H(22-3)或更高版本,修复代码并提交补丁;)

没有直接支持这样写表达式,但是因为有时区支持(现在),您可以绕过这个。

# 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的注释中发现了这个变通方法

更新:

当前有一个bug JENKINS-57702,时区GMT-XX没有正确计算。一种解决方法是使用等效的时区,在本例中为,即夏威夷的时区:

TZ=US/Hawaii
H H(10-15) * * *

相关内容

  • 没有找到相关文章

最新更新