我试图遍历列表计算机并在相应节点上运行命令。问题是,每当我运行它时,我都会收到NullPointerException。
在控制台日志中,它表明它正在阵列的第一个节点上运行,但没有比这更远了。
我尝试将节点置于一个阶段,但也没有运气。
println computerList //Array of node names to be iterated
@NonCPS
def echo_all(list) {
list.each {
node("${it}"){
echo "Hello World"
}
}
}
echo_all(computerList)
我希望结果可以在阵列中的每台机器上运行Hello World。
答案 0 :(得分:0)
这是一个在具有特定标签的所有节点上运行shell命令的示例。 我正在执行“ uname -a”,而不是回显“ Hello World”,因此将显示节点名称。
label = "database_servers"
echo "Will run on hosts with label ${label}"
listOfNodeNames = jenkins.model.Jenkins.instance.nodes.collect {
node -> node.getLabelString().contains(label) ? node.name : null
}
listOfNodeNames.removeAll(Collections.singleton(null))
for (node_to_run_on in listOfNodeNames) {
println "Node: " + node_to_run_on
node ("${node_to_run_on}") {
stage("Run uname on ${node_to_run_on}") {
sh ("uname -a")
}
}
}