Dictionary 如何将映射传递给Jenkins管道全局函数?
我有一个类似这样的想法:Dictionary 如何将映射传递给Jenkins管道全局函数?,dictionary,jenkins,groovy,jenkins-pipeline,Dictionary,Jenkins,Groovy,Jenkins Pipeline,我有一个类似这样的想法: def myStep(Closure body) { def config = [:] body.resolveStrategy = Closure.DELEGATE_FIRST body.delegate = config body() echo config.name // works echo config.configure // is null } myStep { name = 'lin
def myStep(Closure body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
echo config.name // works
echo config.configure // is null
}
myStep {
name = 'linux-build'
configure = [os: 'linux', dir: 'build']
echo "myStep"
}
这就是所谓的:
def myStep(Closure body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
echo config.name // works
echo config.configure // is null
}
myStep {
name = 'linux-build'
configure = [os: 'linux', dir: 'build']
echo "myStep"
}
正常变量名称正在工作,但传递的映射配置不起作用。可能是因为def config=[:]的缘故吧?如何访问函数中的映射?映射确实已通过。问题是echo不知道如何处理映射以便在控制台中打印,echo似乎只打印字符串
因此,您可以尝试使用以下代码:
echo config.configure.toString() // prints [os:linux, dir:build]
或使用GString:
或使用println:
问题是Map就在那里,因此您可以访问config.configure.os或config.configure.dir而不会出现问题,请尝试jenkins管道中的以下代码:
def myStep(Closure body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
echo config.name // works
echo config.configure.os // prints linux
echo config.configure.dir // prints buid
println config.configure // prints {os=linux, dir=build}
}
myStep {
name = 'linux-build'
configure = [os: 'linux', dir: 'build']
echo "myStep"
}
它在输出控制台中显示以下结果:
地图真的通过了问题是echo不知道如何处理地图以便在控制台中打印似乎echo只打印字符串
因此,您可以尝试使用以下代码:
echo config.configure.toString() // prints [os:linux, dir:build]
或使用GString:
或使用println:
问题是Map就在那里,因此您可以访问config.configure.os或config.configure.dir而不会出现问题,请尝试jenkins管道中的以下代码:
def myStep(Closure body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
echo config.name // works
echo config.configure.os // prints linux
echo config.configure.dir // prints buid
println config.configure // prints {os=linux, dir=build}
}
myStep {
name = 'linux-build'
configure = [os: 'linux', dir: 'build']
echo "myStep"
}
它在输出控制台中显示以下结果: