我对詹金斯(Jenkins)和格罗维(Groovy)并不陌生,有点死胡同。我非常感谢您的帮助。
我的目标是从特定作业的构建中获取特定参数。这是我的代码:
import jenkins.model.*
import hudson.model.*
def ji = Jenkins.instance
// get current thread / Executor
def thr = Thread.currentThread()
// get current build
def build = thr?.executable
def param_name = "GERRIT_CHANGE_ID"
def job_pattern = /test/
def matchedJobs = ji.items.findAll { job ->
job.name =~ job_pattern
} // I am trying to get the builds from this specific job and then extract the parameter in question
matchedJobs.each {
allBuilds = it.getBuilds()
jobName = it.fullName
allBuilds.each {
def foo = build.buildVariableResolver.resolve("GERRIT_CHANGE_ID")
println "GERRIT_CHANGE_ID=$foo"
}
}
我得到的结果是:
Building on master in workspace /var/jenkins_home/workspace/paramtest
GERRIT_CHANGE_ID=null
GERRIT_CHANGE_ID=null
GERRIT_CHANGE_ID=null
Script returned: [org.jenkinsci.plugins.workflow.job.WorkflowJob@317e5888[test]]
Finished: SUCCESS
如果我为系统Groovy脚本作业(我正在处理)定义了一个具有相同名称的参数,则它将毫无问题地返回该参数。
所以我认为该脚本仅在系统Groovy作业本身的工作空间中搜索,而不是进入我尝试建立的版本。不过,我不知道如何使它工作。
祝大家新年快乐!
欢呼