如何获得jenkins节点是免费的或不在管道groovy脚本中



我在jenkins设置管线中运行master和多个slave节点,我有一个要求,我需要找到slave节点是否空闲(需要确认该节点上没有运行作业(。如果它是免费的,我需要在该节点上执行一些活动。如有任何帮助,将不胜感激

nodelist = ['master', 'node1', 'node2']
def builders = [:]
for (x in nodelist) {
def nodelabel = x 
builders[nodelabel] = {
node(nodelabel) {
#how to get the node is free or not 
if free do some task 
else continue.

编辑:重写答案。

您可以访问可以从Node对象获得的Computer对象。

for (Node node in Hudson.instance.nodes) {
def nodeName = node.getNodeName()
def computer = node.toComputer()
if (computer  != null && node.toComputer().online) {
println """node ${nodeName} 
busy: ${computer.countBusy()} 
idle: ${computer.countIdle()} 
total: ${computer.countExecutors()} """
}
}

显然,countBusy()为0的节点是绝对自由的。

最新更新