我可以让Jenkins的SCM轮询间隔随机化

时间:2012-08-10 06:42:07

标签: continuous-integration jenkins cloudbees

在大多数Jenkins的例子中,SCM轮询值被指定为* / 15 * * * *,即。每隔15分钟轮询一次SCM。当你有数百个工作时,这很好,但如果你有数千个工作就没有,因为它会在一小时后的15,30,45和0分钟内向SCM(本例中为Subversion)服务器发出数千个请求。

有没有办法在Jenkins中随机化轮询值以避免上述情况?

在Jenkins主配置屏幕上,有一个值“最大并发轮询数”。是否应该设置(和什么值)以避免上述情况?

4 个答案:

答案 0 :(得分:29)

使用H而不是*,Jenkins将随机分发轮询。请注意,目前还没有找到一个不同于每小时/每天/等的频率的良好语法,所以

H * * * *

将以预先确定的随机分钟每小时轮询一次。

H H * * *

每天会以预先确定的随机时间和分钟进行一次投票

H H H * *

每周投票一次

0 H * * *

将按小时进行投票,但每天在预先确定的随机时间进行一次投票。

请记住,您可以使用多个cron行,并且任何匹配都是匹配的,因此在确定了小时频率的良好语法之后,您可以更接近(平均而言)

H * * * *
H * * * *
H * * * *
H * * * *
H * * * *
H * * * *

投票之间平均会给你15分钟(是的,每小时会有6次投票,但这很可能是每个季度至少有一次投票会下降)

如果您对在一小时内分发语法有很好的建议,请回复此主题:

https://groups.google.com/forum/?fromgroups#!jenkinsci-users/VghEjfygWuw/PuIG1o7u1GQJ%5B1-25%5D

更新(2013年4月)

Jenkins 1.510和更新版本包含new syntax以允许在一小时内指定发行版

答案 1 :(得分:2)

如果将并行轮询的最大数量设置为1到3之间的某个值,则轮询请求将简单地排队并连续处理(或最多并行处理3个)。

鉴于SVN轮询涉及的所有内容实际上都是

svn info branch-url

它们都应该很快完成,但至少你会限制并行请求。

答案 2 :(得分:1)

@Stephen Connolly的解决方案可能是一个很好的解决方案。

如果您确实需要担心数千个工作,请考虑根据工作名称的某些部分设置时间(假设您的工作名称合理分配)。

例如,如果您的作业以“B”开头,请将时间设置为* / 2。如果它以'C'开头,则将其设置为* / 3等('A'需要的不是1)。

这不是一个了不起的解决方案,但如果您真的想要管理那么多工作,那么在您找到更好的解决方案之前,这可能是一种解决方法。

答案 3 :(得分:0)

H H H * *

我认为以上每月不会每周进行一次民意调查