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

标签 jenkins jenkins-pipeline

我正在使用 Jenkins 管道脚本,当所有节点都离线时,构建会继续排队。当所有从站都离线时,如何阻止 Jenkins 将作业添加到队列中?

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

    }
}

enter image description here

最佳答案

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

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

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/

相关文章:

从 Jenkinsfile 设置构建参数时出现 Jenkins 错误

jenkins - 如何在声明式管道中定义多个容器?

java - 无法创建缓存目录 :Vert. x:Jenkins 构建

json - 从 package.json 版本值设置 Jenkins 构建名称

kubernetes - Jenkinsfile模板来安装卷

jenkins - 如何在多分支管道项目中为每个分支级别的用户提供访问权限?

Jenkinsfile 嵌套阶段抛出错误

git - 如何配置 Gerrit 触发器仅在主分支或分支发生更改(不包括(refs/for/*))时触发?

jenkins - SonarQube 扫描仪执行时出错 [Windows - Linux 主从]

jenkins - 将 opencover xml 输出转换为 ncover xml