我正在使用 Jenkins 管道脚本,当所有节点都离线时,构建会继续排队。当所有从站都离线时,如何阻止 Jenkins 将作业添加到队列中?
pipeline {
triggers {
pollSCM('H/3 * * * 1-5')
}
}
最佳答案
您的代理的可用性是否配置为“尽可能保持该代理在线”?
解决这种情况的一种方法是,在主节点上运行以下脚本并仅在至少一个节点在线时构建管道。您可以将在线节点名称作为参数传递给下游作业。
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
关于当所有代理都离线时,Jenkins 管道队列已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52774211/