我可以将詹金斯的 SCM 轮询间隔随机化吗?



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

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

在 Jenkins 主配置屏幕上,有一个并发轮询的值 Max #。 是否应该设置此值(以及设置为什么值)以避免上述情况?

使用 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 及更高版本包含一种新的语法,允许在一小时内指定发行版

如果将并发轮询的最大#设置为介于 1 和 3 之间,则轮询请求将简单地排队并串行处理(或最多并行处理 3 个)。

鉴于 SVN 轮询中涉及的所有内容都是有效的

SVN info branch-url

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

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

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

例如,如果您的作业以"B"开头,请将计时设置为 */2。如果它以"C"开头,则将其设置为 */3 等("A"需要 1 以外的其他内容)。

这不是一个了不起的解决方案,但如果你真的想管理那么多工作,这可能是一个变通办法,直到你能找到更好的解决方案。

H

H H * *

我认为上面会每月投票一次,而不是每周

最新更新