【发布时间】:2020-09-16 17:41:33
【问题描述】:
我有两个 jenkins 声明性管道作业 A 和 B。作业 A 需要具有并发构建,但是当作业 A 正在运行并且作业 B 不能同时运行时,作业 B 不能运行。我不想通过使用可锁定资源插件锁定资源来阻止作业 A 的并发构建。我怎样才能使这种情况起作用。有什么想法或建议吗?
【问题讨论】:
标签: jenkins jenkins-pipeline jenkins-plugins
我有两个 jenkins 声明性管道作业 A 和 B。作业 A 需要具有并发构建,但是当作业 A 正在运行并且作业 B 不能同时运行时,作业 B 不能运行。我不想通过使用可锁定资源插件锁定资源来阻止作业 A 的并发构建。我怎样才能使这种情况起作用。有什么想法或建议吗?
【问题讨论】:
标签: jenkins jenkins-pipeline jenkins-plugins
对此没有很好的解决方案。 “正确”的解决方案 IMO 是一个读/写互斥体,其中B 可以锁定 R/W(因此 A 和 B 都不能使用该资源),但 A 只能锁定 W(所以 A 可以继续获取读锁,但B无法获取其写锁)。
到目前为止,我见过的最好的解决方法是手动创建一个具有相同标签的大型可锁定资源池。让A 一次请求锁定该标签的一个资源,而B 锁定整个池(注意lock 步骤有一个参数quantity)。这允许相同的功能,但更加神秘且无法扩展(如果您突然需要同时运行 100 次 A 但只创建了 50 个资源,则您不再具有完全并行性)
【讨论】:
【讨论】: