我正在使用6个奴隶-每个Jenkins设置都有4个执行程序来运行脚本化的多分支管道。
我面临的问题是,当我尝试在不同的[[slaves而不是executors上并行执行管道的4个阶段时。由于詹金斯家族由多个团队共享,因此我不能将奴隶限制为一个执行者,以确保1阶段-1奴隶关系。我尝试添加disableConcurrentBuilds()
选项,但还是没有运气。
原因是,尽管您可以做出合理的努力来确保团队的阶段A不干扰您的团队的阶段B(目前看来他们
do会干扰,因此您的问题是)–您不能对以下方面做出任何假设:a)您的某些阶段不会破坏其他团队的阶段;或b)他们的阶段会破坏你的。在我们的情况下,舞台上的磁盘空间已用完,所以我们之前要清理Docker映像,对吗?糟糕-另一个执行程序正在使用该映像,并且docker守护程序在所有执行程序之间共享。这是另一种情况:您的阶段创建了一个大文件-存储空间耗尽-最多有[[four个作业失败(您以及三个无辜的执行者)。]
您最好的做法似乎是说服用4台小型1台执行器机器替换4台大型执行器的能力。您的其他选择包括使用“可锁定资源”插件并锁定例如机器的名称。这不会阻止在同一台机器上调度管道的不同部分,但是会保留其中一个阶段,直到上一个阶段结束为止。根据我们的经验,这导致流水线执行时间大大增加,而没有任何实质性收益。