当所有代理都离线时,Jenkins管道队列已满

时间:2018-10-12 07:13:07

标签: jenkins jenkins-pipeline

我正在使用Jenkins管道脚本,并且当所有节点都处于脱机状态时,构建会继续排队。当所有奴隶都离线时,如何阻止Jenkins将作业添加到队列中?

pipeline {
  triggers {
      pollSCM('H/3 * * * 1-5')

    }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

您的代理的可用性是否配置为“使该代理尽可能在线”?

解决这种情况的一种方法是,仅在主节点上至少有一个联机时,在主节点上运行以下脚本并构建管道。您可以将在线节点名称作为参数传递给下游作业。

def axis = []
for (slave in jenkins.model.Jenkins.instance.getNodes()) {
 if (slave.toComputer().isOnline()) {
    axis += slave.getDisplayName()
 }
}
return axis 

以上脚本来源:Jenkins: skip if node is offline

其他可能有用的链接是:

监控并重新启动您的从属节点-https://wiki.jenkins.io/display/JENKINS/Monitor+and+Restart+Offline+Slaves

在某些情况下,我发现此脚本很方便: https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/clearBuildQueue.groovy

答案 1 :(得分:0)

我不从事管道作业,但是对于常规的自由式作业,只有在对构建进行参数化的情况下才会发生这种排队。然后需要单独的构建,以确保项目将针对每个参数值单独运行(该值是否实际不同并不重要)。

因此,删除项目中的构建参数可能会解决问题。