如何在groovy脚本中获取jenkins节点是免费的还是不免费的

如何在groovy脚本中获取jenkins节点是免费的还是不免费的,groovy,jenkins-pipeline,Groovy,Jenkins Pipeline,我在jenkins设置管线中运行主节点和多个从节点。我需要找到从节点是否空闲(需要确认该节点上没有运行作业)。如果它是免费的,我需要在该节点上执行一些活动。 任何帮助都将不胜感激 nodelist = ['master', 'node1', 'node2'] def builders = [:] for (x in nodelist) { def nodelabel = x builders[nodelabel] = { node(nodelabel) { #h

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

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.
 

编辑:重新写下答案

您可以访问可以从对象获取的对象


显然
countBusy()
为0的节点是绝对空闲的。

编辑:重新写入答案

您可以访问可以从对象获取的对象


显然,
countBusy()
为0的节点是完全免费的。

感谢您的响应,但我的要求是需要查明从属节点上没有正在运行的作业。如何做到这一点重写我的答案。我以前的解决方案对我们来说效果更好,但我们每个节点都有一个执行器。感谢您的响应,但我的要求是需要查明从属节点上没有作业正在运行。如何做到这一点重写我的答案。我以前的解决方案对我们更有效,但我们每个节点有一个执行器。
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()} """
    }
}