jenkins管道功能错误没有错误

时间:2017-02-23 09:28:25

标签: 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是一个文本框变量,在构建开始时会被激活

函数oliTest()就是这样:

def call(SERVERID, CHECKSCRIPT, VIRTUALIZATION, OLIPREPARE, OLINETBOOT, PRODUCTS){

    try {
    timeout(time: 5, unit: 'HOURS') {
    println SERVERID
    println CHECKSCRIPT
    println VIRTUALIZATION
    println OLIPREPARE
    println OLINETBOOT
    println PRODUCTS
    //oliPrepare(SERVERID, CHECKSCRIPT, VIRTUALIZATION, OLIPREPARE, OLINETBOOT)
    oliProd(SERVERID, CHECKSCRIPT, VIRTUALIZATION, PRODUCTS)
    oliBackup(SERVERID, CHECKSCRIPT, VIRTUALIZATION)
    oliRestore(SERVERID, CHECKSCRIPT, VIRTUALIZATION)
    }
        } catch(error) {
    sh "fab -f /home/adminuser/scripts/${VIRTUALIZATIO}Nfab.py powerOffVm:vmName=${SERVERID}"
    sh 'return 1'
    }
}

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"
}

用''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

有关如何使事情发挥作用的任何建议吗?

干杯

2 个答案:

答案 0 :(得分:0)

请注意,您可以使用三重双引号而不是三重单引号。那可以解决这个简单的问题。

但是,你真的应该在脚本代码本身进行迭代,而不是尝试在shell中进行迭代。

答案 1 :(得分:0)

Jon S建议解决脚本方法,例如" echo"对{&#34}管道对象的引用,如oliTest(this, ...)oliTest声明一个Script参数,并将其传递给其他方法/实例,用于解析echo scriptObj.echo 1}}。

println in "call" method of "vars/foo.groovy" works, but not in method in class