如何在groovy脚本中获取jenkins节点是免费的还是不免费的
我在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
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()} """
}
}