JenkinsFile如何查询作业是否存在

时间:2018-02-07 19:12:04

标签: jenkins jenkins-pipeline

在声明性Jenkins文件中,如何确定作业是否存在?

如果存在其他工作,我想有条件地运行一个阶段,如下:

pipeline {
  agent { label 'mylabel' }
  // Run the the stages:
  stages {
    stage('Pre-Build') {
      steps {
        timestamps { ansiColor('xterm') { sh 'build/jenkins_prebuild.sh' } }
      }
    }
    stage('Pre-Build') {
      steps {
        timestamps { ansiColor('xterm') { sh 'build/jenkins_build.sh' } }
      }
    }
    stage('Trigger Remote If Exists'){
    when { JOB_EXISTS }
      steps {
        timestamps {
          ansiColor('xterm') {
            sh 'build/pre-trigger.sh'
            build job: "../myjob/foo", wait: false, parameters: [booleanParam(name: 'FOO', value: true)]
          }
        }
      }
    }
  }
}

基本上,我应该为JOB_EXISTS做什么?

2 个答案:

答案 0 :(得分:1)

if (jenkins.model.Jenkins.instance.getItem("YOUR_JOB_NAME") != null) {

}

您可能无法在声明性管道中使用以上代码段。但是您应该可以在全局共享库中使用它。

更新: 管理员需要在“管理Jenkins->进程内脚本批准”部分中批准此代码段。

答案 1 :(得分:-1)

还有此选项:https://stackoverflow.com/a/52076776/3384609

try {
    println("Preparing to build the ${jobName}...")
    build job:"${jobName}", propagate:false, wait:false
} catch (NullPointerException e) {
    println("Not building the job ${jobName} as it doesn't exist")
}```