詹金斯平行管道竞赛条件阻止所有构建

时间:2016-12-02 20:08:36

标签: jenkins-pipeline

有关为什么并行管道会导致竞争条件的任何线索?

这曾经在作业将在所有节点上安排任务的地方工作,并且一旦繁忙的节点被释放就会执行。

升级后,如果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

0 个答案:

没有答案