2017-07-16 139 views
2

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

如果找不到标签,有没有办法指定一个选项来中止(或不启动)构建?

+0

如何将标签名称传递给Jenkinsfile? –

+0

@VitaliiVitrenko我们Jenkinsfile看起来是这样的: '''{管道代理 {标签 '我的建造节点-1'}} ''' 这个标签指的是码头工人的形象,这是提供一个詹金斯,但不是另一个。 (它的故意),我想看看是否有一种方法来拒绝构建,如果没有找到标签。 – vasya10

+0

不确定在声明式管道中是否可行,但是您肯定可以在脚本管道中执行此操作 –

回答

0

一些讨论在这里: 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 
相关问题