【发布时间】:2020-02-16 17:47:13
【问题描述】:
我有一个 Jenkins 管道,它有 6 个阶段。
在 6 个阶段中的 4 个阶段中,管道使用 build job 触发 Jenkins 作业。
管道和作业都设置为允许并发并行执行。
运行管道和作业的节点是单个节点,number of executer 设置为 10。
当我运行 10 个并行并发管道时一切正常。
但是如果我运行超过 10 个并行管道,那么它们似乎都陷入了死锁,无论您等待多长时间,它们都没有完成,并且它们正在等待对方完成。
如果我杀死第 11 次执行,那么所有 10 次都开始成功完成。
我的要求是,如果有人执行的管道的并发构建数量多于它所运行的节点的执行器数量;那么在这种情况下,10 应该完成并行执行,11 以后应该等到那时,并且应该在第二批 10 次执行中执行,而不是全部进入挂起状态。
请帮助我了解这是否是 Jenkins 最新版本的错误,以及避免所有管道构建陷入挂起状态的解决方法是什么?
【问题讨论】:
-
我不确定我是否完全理解您想要实现的目标。你能加一个minimal reproducible example吗?启动其他作业的管道真的必须等待作业完成吗?否则为
build步骤的wait参数传递false,这允许当前管道结束,为启动的作业释放一个槽。不使用插件的另一种方法:为启动的作业创建一个专用节点(甚至可以在同一台机器上),这样他们就不必与启动器争夺执行器。
标签: jenkins parallel-processing jenkins-pipeline hung