这是 Jenkins Groovy 脚本,其中..下面正在工作..在“验证 - line0”阶段,内容被正确返回。
stage('Read and assign value Groups') {
steps{
script {
def build_properties = readProperties file: "file.txt"
image_properties.line0 = build_properties.line0
}
}
}
stage('validating - line0') {
steps{
script {
container("${opts.container}") {
println("Content: ${image_properties.line0}")
}
}
}
}
但是,我们如何让它们变得动态呢?下面这个不起作用。不起作用的是,在“validating - line0”阶段,内容打印“null”。有什么问题请指教。我们想要动态创建变量并将值分配给其他阶段。
stage('Read and assign value Groups') {
steps{
script {
TotalCountline = sh ( script: 'cat file.txt|wc -l', returnStdout: true).trim().toInteger()
def build_properties = readProperties file: "file.txt"
for(i=0;i<TotalCountModelGroup;i++) {
def var1="image_properties.line$i"
def var2="build_properties.line$i"
println (var1 + "="+ var2)
var1 = var2
}
}
}
}
stage('validating - line0') {
steps{
script {
container("${opts.container}") {
println("line Content: ${image_properties.line0}")
}
}
}
}
并且
file.txt
包含
line0=[acme01, acme02, acme03, acme04]
line1=[acme11, acme12, acme13, acme14]
line2=[acme21, acme22, acme23, acme24]
line3=[acme31, acme32, acme33, acme34]
这是在全局声明的,位于“pipeline{}”之前
def (image_properties, branch) = [ [image_tags:[]], null ]
readProperties返回一个java Map(键值对) 您可以使用以下代码迭代它:
def (image_properties, branch) = [ [image_tags:[]], null ]
def build_properties = readProperties file: "file.txt"
build_properties.each{ k,v ->
image_properties[k]=v
}
或者它可以更简单,因为 image_properties 也是一个 Map:
def (image_properties, branch) = [ [image_tags:[]], null ]
def build_properties = readProperties file: "file.txt"
image_properties.putAll(build_properties)
javadoc Map.putAll(Map)