在声明性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做什么?
答案 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")
}```