有关为什么并行管道会导致竞争条件的任何线索?
这曾经在作业将在所有节点上安排任务的地方工作,并且一旦繁忙的节点被释放就会执行。
升级后,如果jenkins维护作业在第一次执行时无法在所有节点上执行,则会创建竞争条件,阻止jenkins执行任何操作,即使节点可以自由执行。
@NonCPS
List <String> getOnlineNodeNames() {
List <String> nodeNames = []
def allNodes = Jenkins.getInstance().getNodes()
for (int i =0; i < allNodes.size(); i++) {
Slave node = allNodes[i]
if (node.getComputer().isOnline()) {
nodeNames.add(node.name.toString())
}
}
return nodeNames
}
stage name: "Prepare", concurrency: 1
List<String> nodeList = getOnlineNodeNames()
branches = [:]
stage name: "Build", concurrency: 1
for (int i =0; i < nodeList.size(); i++) {
String nodeName = nodeList[i]
if(nodeName.contains("win")) {
branches[nodeName] = { node(nodeName) {
bat '''echo On windows Node'''
}
}
} else {
branches[nodeName] = { node(nodeName) {
sh '''echo on linux node'''
}
}
}
}
parallel branches