我不确定我是否在标题中对此进行了总结,因此欢迎提出建议。
Jenkins配置:
agent { label "some-label" }
假设: 当隐式加载共享库时,它们总是克隆在主服务器上,并且在执行实际管道代码之前将脚本加载到内存中。
问题: 对于每个运行的管道,在任何管道代码可以序列化并在代理上运行之前,会在主服务器上克隆X个可信共享库。 我无法知道您可以告诉Jenkins只能立即在主服务器上运行N个克隆。最终的结果是,当许多管道同时运行时,同时在主服务器上运行的git克隆数量很大,这会使Jenkins服务器或git服务器崩溃并导致构建失败(或者由于超时或其他相关原因)。
解决方法(排序)
隐式加载尽可能少的可信共享库,然后在Lockable Resources Plugin中包含lock ... { }
时显式加载它们以限制git克隆的数量。
这并没有真正解决这个问题,因为有特定的原因你需要使用隐式加载vs显式。
希望我遗漏了一些明显的东西:)
答案 0 :(得分:0)
当然我的建议是有意见的。
以下物品导致我的眉毛抬起:
许多受信任的共享库(在Jenkins主配置中配置的那些共享库)都是使用git作为VCS加载的。
鉴于这张票是开放的,只有很少的评论/投票: https://issues.jenkins-ci.org/browse/JENKINS-48210,
詹金斯社区并不吸引许多人。
我认为jenkins网站上有关库的文档, 有一些隐藏的假设:
那么,您可以推断出什么是实用的AI:
另外,也很高兴知道一些有关CI网络和git服务器之间的链接速度以及并行运行[O(?)]的作业的信息。
请告诉我您如何解决问题。 (听起来很有趣,我想学习更多!)