我正在使用Jenkins管道脚本,并且当所有节点都处于脱机状态时,构建会继续排队。当所有奴隶都离线时,如何阻止Jenkins将作业添加到队列中?
pipeline {
triggers {
pollSCM('H/3 * * * 1-5')
}
}
答案 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)
我不从事管道作业,但是对于常规的自由式作业,只有在对构建进行参数化的情况下才会发生这种排队。然后需要单独的构建,以确保项目将针对每个参数值单独运行(该值是否实际不同并不重要)。
因此,删除项目中的构建参数可能会解决问题。