当前位置: 首页 > 知识库问答 >
问题:

如果标签不匹配,如何中止Jenkins管道构建

裴甫
2023-03-14

我有一个Jenkinsfile多分支管道脚本,它在两个不同的Jenkins系统上运行。Jenkins文件依赖于特定的标签名。在其中一个系统中,基于标签的代理可用,而在另一个系统中,基于标签的代理不可用(有意)。前者运行良好。在没有匹配标签的Jenkins系统中,作业只是挂起,因为它找不到匹配的代理。

如果找不到标签,有没有办法指定中止(或不启动)生成的选项?

共有3个答案

尉迟默
2023-03-14

这只是一个解决方法,但为了避免对共享库的依赖,我每X分钟运行一次以下命令,以清除队列中的罪犯:

import hudson.model.*

def q = Jenkins.instance.queue

q.items.each { 
  if (it =~ /someregex or match all/) {
    why = it.getWhy() 
    if (why =~ /.*There are no nodes with the label.*/) {
        println "No node found for $it.task.runId. It's stuck in damn jenkins queue forever and ever. Killing it"
        q.cancel(it.task)
    }
  }
}
傅安宁
2023-03-14

对于声明性管道,当{beforeAgent}时,可以使用来测试标签是否存在。

这只有在为阶段而不是整个管道指定代理时才有用。

...请注意,这是一个尚未验证的假设。

景信瑞
2023-03-14

这里有一些讨论:https://issues.jenkins-ci.org/browse/JENKINS-35905

短期内可能不太可能

如果他们正在调用共享库,那么您可以检查标签是否在线/可用,然后使构建失败

def computers = Jenkins.instance.computers
for(computer in computers){
       if(computer.isOnline()){
            labelStr = computer.node.getLabelString()
       }
       if labelStr ~= /user input/
           break;
}
System.exit(1); // no label
 类似资料:
  • 问题内容: 尝试使用 这将失败,并显示身份验证错误。除了使用以外还有其他方法吗 withCredentials 在Jenkinsfile中签出标签 问题答案: 花完之后,几个小时就到了 在声明式管道中使用GitSCM的正确方法是 不像我在网络上的大多数地方都找到的

  • 问题内容: 我有以下内容: 该映像已在本地成功构建。 我正在尝试配置Jenkins管道,并尝试使用以下步骤构建映像: 但是在Jenkins控制台中,我得到了错误: 未知标志:来自 我应该如何编辑我的,尤其是标签,以便能够在本地和通过Jenkins管道构建图像? 更新: 我已经将Docker更新为18.06.1-ce版本。仍然有同样的错误。 詹金斯版 2.89.4 Docker Pipeline插件

  • 我有三份詹金斯的工作。烟雾试验、关键路径试验(第1部分)、关键路径试验(第2部分)。现在一个接一个的开始。我需要根据测试结果创建构建管道。我需要考虑单个测试的结果(TestNG中的@test注释),忽略测试套件的整体结果。 我想得到这样的配置: 烟雾测试- 那么,请告诉我Jenkins如何仅依赖于一个测试结果(而不是所有套件)?

  • 问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test

  • 通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J

  • 我有一个带有、、等的声明性Jenkins管道。如果设置生成不稳定/失败,我想停止运行。 我知道,当构建未成功时,我可以使用停止运行中的步骤,但无法找到一种方法,在不运行以下阶段的情况下退出管道 以下是我所拥有的: 如果阶段3将执行跳过阶段2 注意:我不能包括阶段2/3/...阶段1中的步骤。应该是那样的。基于构建参数第2/3/4阶段...将在第1阶段之后调用