我正在尝试划分管道。大多数参数都成功传递,但那些包含变量的参数在我需要之前就被解析了。
詹金斯版 2.164.1
Jenkins.file content:
stage ('prebuild') {
steps {
script {
VERSION="temprorary-value"
POSTBUILDACTION="make.exe \\some\\path\\file_${VERSION}"
}
}
}
stage ('build') {
steps {
script {
build (POSTBUILDACTION)
}
}
}
build.groovy content:
def call (String POSTBUILDACTION) {
...
checkout somefile
VERSION=readFile(somefile)
bat "${POSTBUILDACTION}"
}
在这里,我希望该版本将从重新定义的 VERSION 变量中获取,但 POSTBUILDACTION 作为字符串传递给函数。结果它被原样调用(“make.exe \some\path\file_temprorary-value”)。事实上我想得到的命令是(一些文件只包含一个数字,例如“5”)
make.exe \some\path\file_5
但现在我有
make.exe \some\path\file_temprorary-value
或者,如果我试图通过 \${VERSION} 像:
POSTBUILDACTION="make.exe \\some\\path\\file_\${VERSION}"
- 按原样传输:
make.exe \some\path\file_${VERSION}
我试图在预构建阶段查看一个 POSTBUILDACTION 类 - 它等于“class org.codehaus.groovy.runtime.GStringImpl”,并且在传递 throw 后在构建阶段也相同 - 它变成了一个字符串:“class java.lang.String”
那么如何将包含变量的函数参数传递给函数,而不是它的值?或者将“呼吸生命”变成一根干燥的绳子,比如
'make.exe \\some\\path\\file_${VERSION}'
所以变量可以解决吗?