首页 > 解决方案 > 如何在所选节点空闲之前保持 Jenkins multiJob 执行?

问题描述

我有一个关于詹金斯多工作可能性的问题:


当前状态:


期望状态:


这不会是问题,如果所有节点都是空闲的......但是如果这三个节点中至少有一个正在运行其他作业,那么这已经是一个问题了,因为与其他两个相比,一个 subJob 会迟到

有没有办法设置一些预构建脚本/另一种方式来运行 subJobs,只有当所有三个选择的节点都是空闲的/等待它们空闲时?

非常感谢所有的想法:)

标签: shelljenkinsnodesparallel-execution

解决方案


您可以检查特定节点上构建执行程序的状态作为预构建操作。如果构建执行器是空闲的,这意味着没有作业在运行,但如果它很忙,那么它正在运行。简单的 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


推荐阅读