Bash jenkins管道函数错误,无错误
我正在使用jenkins管道脚本在我们的机器上进行产品测试 所有测试之父都是这样的Bash jenkins管道函数错误,无错误,bash,jenkins,jenkins-pipeline,Bash,Jenkins,Jenkins Pipeline,我正在使用jenkins管道脚本在我们的机器上进行产品测试 所有测试之父都是这样的 node('nightly-master') { stage 'run' println PRODUCTS oliTest('win7.nightly.test', 'checkAndWaitForInstalledProduct.py', 'esxi', 'opsi-local-image-prepare', 'opsi-local-image-win7', PRODUCTS) ) } PRODUCTS是一
node('nightly-master') {
stage 'run'
println PRODUCTS
oliTest('win7.nightly.test', 'checkAndWaitForInstalledProduct.py', 'esxi', 'opsi-local-image-prepare', 'opsi-local-image-win7', PRODUCTS)
)
}
PRODUCTS是一个文本框变量,在构建开始时输入
函数oliTest()如下所示:
println值正确打印到jenkins日志中
一旦调用函数oliProd(),测试就会失败,并且在下面的块中的forr循环中没有任何错误消息
def call(SERVERID, CHECKSCRIPT, VIRTUALIZATION, PRODUCTS){
stage 'install Products'
println SERVERID
println CHECKSCRIPT
println VIRTUALIZATION
println PRODUCTS
sh " echo ${PRODUCTS}"
sh "echo ${SERVERID}"
sh "for i in ${PRODUCTS}; do opsi-admin -d method setProductActionRequestWithDependencies $i ${SERVERID} setup;done"
}
由于${SERVERID}未展开并保留为空,因此使用“COMMAND”多行写入时出现错误
有什么建议可以让事情顺利进行吗
干杯注意,可以使用三重双引号代替三重单引号。这就解决了这个简单的问题
但是,您确实应该在脚本代码本身中进行迭代,而不是尝试在shell中进行迭代。Jon建议根据对“管道对象(如
oliTest中的管道对象)的引用来解析脚本方法,例如“echo”(这,…)
其中oliTest
声明一个脚本参数,并将其传递给其他方法/实例,用于将echo
解析为scriptObj.echo
def call(SERVERID, CHECKSCRIPT, VIRTUALIZATION, PRODUCTS){
stage 'install Products'
println SERVERID
println CHECKSCRIPT
println VIRTUALIZATION
println PRODUCTS
sh " echo ${PRODUCTS}"
sh "echo ${SERVERID}"
sh "for i in ${PRODUCTS}; do opsi-admin -d method setProductActionRequestWithDependencies $i ${SERVERID} setup;done"
}