2
我有一个Jenkinsfile多分支管道脚本,它运行在两个不同的Jenkins系统上。 Jenkinsfile依赖于特定的标签名称。在其中一个系统中,基于标签的代理可用,而另一个则不可(有意)。前者运行良好。在没有匹配标签的Jenkins系统中,作业只是挂起,因为它找不到匹配的代理。如何中止Jenkins管道构建,如果标签不匹配
如果找不到标签,有没有办法指定一个选项来中止(或不启动)构建?
我有一个Jenkinsfile多分支管道脚本,它运行在两个不同的Jenkins系统上。 Jenkinsfile依赖于特定的标签名称。在其中一个系统中,基于标签的代理可用,而另一个则不可(有意)。前者运行良好。在没有匹配标签的Jenkins系统中,作业只是挂起,因为它找不到匹配的代理。如何中止Jenkins管道构建,如果标签不匹配
如果找不到标签,有没有办法指定一个选项来中止(或不启动)构建?
一些讨论在这里: 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
如何将标签名称传递给Jenkinsfile? –
@VitaliiVitrenko我们Jenkinsfile看起来是这样的: '''{管道代理 {标签 '我的建造节点-1'}} ''' 这个标签指的是码头工人的形象,这是提供一个詹金斯,但不是另一个。 (它的故意),我想看看是否有一种方法来拒绝构建,如果没有找到标签。 – vasya10
不确定在声明式管道中是否可行,但是您肯定可以在脚本管道中执行此操作 –