为什么 Jenkins 不能使用可扩展 choice/system groovy 选择参数找到工作对象?
Why can't Jenkins find job object using extensible choice/system groovy choice parameter?
我按照 Groovy to list all jobs 获取了我的工作名称列表,并得到了我工作的确切 "fullName",即...
Microservice/build/feature%2Fdev-26387-split-micro-deploy
现在我用它来尝试获取此作业的所有成功内部版本号。 return 值仅用于调试以查看我正在 returning 哪个值,我正在 returning 一个带有数字“43”的列表,意思是 getJobs() function returned 为 null,这意味着它无法找到作业对象。为什么?
import hudson.model.*
BUILD_JOB_NAME = "Microservice/build/feature%2Fdev-26387-split-micro-deploy"
def getJobs() {
def hi = Hudson.instance
return hi.getItems(Job)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
// WHY IS THIS NOT WORKING???
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
try {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if (status.contains("stable") || status.contains("normal")) {
buildNumbers.add(build.number)
}
}
/// return buildNumbers
return ["44"]
}
catch (Throwable t) {
return ["45"]
}
}
def buildJob = getBuildJob()
if (buildJob == null) {
return ['43']
}
return getAllBuildNumbers(buildJob)
改用return hi.getAllItems(Job)
,应该可以。此外,确保您的 BUILD_JOB_NAME 设置为正确的作业名称。要检查作业名称,运行 Hudson.instance.getAllItems(Job).each { println(it.fullName) }
来自 Jenkins -> Manage Jenkins -> Script Console
我按照 Groovy to list all jobs 获取了我的工作名称列表,并得到了我工作的确切 "fullName",即...
Microservice/build/feature%2Fdev-26387-split-micro-deploy
现在我用它来尝试获取此作业的所有成功内部版本号。 return 值仅用于调试以查看我正在 returning 哪个值,我正在 returning 一个带有数字“43”的列表,意思是 getJobs() function returned 为 null,这意味着它无法找到作业对象。为什么?
import hudson.model.*
BUILD_JOB_NAME = "Microservice/build/feature%2Fdev-26387-split-micro-deploy"
def getJobs() {
def hi = Hudson.instance
return hi.getItems(Job)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
// WHY IS THIS NOT WORKING???
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
try {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if (status.contains("stable") || status.contains("normal")) {
buildNumbers.add(build.number)
}
}
/// return buildNumbers
return ["44"]
}
catch (Throwable t) {
return ["45"]
}
}
def buildJob = getBuildJob()
if (buildJob == null) {
return ['43']
}
return getAllBuildNumbers(buildJob)
改用return hi.getAllItems(Job)
,应该可以。此外,确保您的 BUILD_JOB_NAME 设置为正确的作业名称。要检查作业名称,运行 Hudson.instance.getAllItems(Job).each { println(it.fullName) }
来自 Jenkins -> Manage Jenkins -> Script Console