如何保持 Jenkins multiJob 执行直到所选节点空闲?

How to hold Jenkins multiJob execution until chosen nodes are free?

我有一个关于 jenkins multijob 可能性的问题:


当前状态:


期望状态:


这不是问题,如果所有节点都是空闲的...但如果这三个节点中至少有一个正在 运行 执行其他任务,这就已经是个问题了,因为一个子作业会比另外两个迟到

只有当所有三个选定的节点都free/to等待它们空闲时,是否有任何方法可以为 运行 子作业设置一些预构建 script/another 方式?

非常感谢所有想法:)

您可以通过 pre-build 操作检查特定节点上构建执行程序的状态。 如果构建执行器是空闲的,那意味着没有工作是 运行 但如果它很忙,那就是 运行 有东西进入它。 简单的 groovy 脚本可用于此目的。

import hudson.model.Node
import hudson.model.Slave
import jenkins.model.Jenkins

Jenkins jenkins = Jenkins.instance
def jenkinsNodes =jenkins.nodes

for (Node node in jenkinsNodes) 
{
// Make sure slave is online
if (!node.getComputer().isOffline()) 
{           
    //Make sure that the slave busy executor number is 0.
    if(node.getComputer().countBusy()==0)
        {
       ...put your logic...
    }
}

}

谢谢, Subhadeep