【发布时间】:2019-02-03 16:13:57
【问题描述】:
我想为我的 Jenkins 构建加载一个闭包,但将一些变量传递给它,这些变量对于我们系统上正在进行的任何类型的构建(Go、Java、Docker)都是通用的。由于我从一个单独的 groovy 文件加载特定的闭包,它看不到这些变量。为了制作一个更简单的示例,我已将负载注释掉并包含该闭包。
我有点不确定如何执行此操作 - 如何将配置从 buildProject 传递到 buildSpecificProject?我是不是指错了?
#!/usr/bin/groovy
//def buildSpecificProject = load 'buildSpecificProject.groovy'
def buildSpecificProject = { body->
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
println config.name
println config.builddirectory
}
def buildProject = { projbody ->
def config = [:]
projbody.resolveStrategy = Closure.DELEGATE_FIRST
projbody.delegate = config
projbody()
config.builddirectory = "/bar"
return config
}
try {
def newProjectVersion = buildSpecificProject { body ->
buildProject { projbody ->
name = 'projectname'
versionPrefix = "4.2.0"
fetchFromURL = 'git@github.com:myorg/myproject.git'
}
}
println "New Project Version = ${newProjectVersion}\n"
} catch (err) {
println err
}
【问题讨论】: