Jenkins 如何避免詹金斯案中的执行人僵局?

Jenkins 如何避免詹金斯案中的执行人僵局?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我在Jenkins安装上配置了两个多分支项目(来自GitHub)。目前,执行人人数为4人 有时,当有很多分支需要构建时,最终会出现这样的情况:所有执行者都在等待自由执行者,而什么也没有发生 你通常如何避免这种情况?当然,我们不能在一台机器上配置一百万个执行器来确保这种情况永远不会发生 我现在有四位遗嘱执行人正在努力建造,他们都在互相等待: Still waiting to schedule task Waiting for next available executor 另一个问题是,这怎么

我在Jenkins安装上配置了两个多分支项目(来自GitHub)。目前,执行人人数为4人

有时,当有很多分支需要构建时,最终会出现这样的情况:所有执行者都在等待自由执行者,而什么也没有发生

你通常如何避免这种情况?当然,我们不能在一台机器上配置一百万个执行器来确保这种情况永远不会发生

我现在有四位遗嘱执行人正在努力建造,他们都在互相等待:

Still waiting to schedule task
Waiting for next available executor


另一个问题是,这怎么可能?他们没有实施任何机制来防止这种情况

这里是一个死锁示例,如果只有一个代理具有标签“agent1”


我建议在每个阶段设置代理或仅在全局级别设置代理,而不要将这两种方法结合使用。

我在全局级别设置了
agent any
,并且在每个阶段设置了其他代理,如您的示例中所示。那很糟糕吗?:)这还不错,但这不是最优的。Jenkins将为该管道的任何构建保留一个“全局”代理,并尝试为该阶段“分配”另一个代理。如果您运行的构建数量与可用的代理数量相同,那么所有代理都将被阻止,并且不会完成任何阶段。如果管道中的每个阶段都有自己的代理,请尝试在全局级别使用
agent none
。好的,将全局代理设置为
none
似乎可以最终解决问题。另请参阅
pipeline {

    agent { label 'agent1' }

    stages {
        stage('simple deadlock') {
            agent { label 'agent1' }
        }
    }
}