2017-02-23 40 views
0

我使用的是詹金斯管道脚本来使我们的机器詹金斯流水线功能错误,并没有错误

所有测试之父产品测试看起来像这样

node('nightly-master') { 

stage 'run' 
println PRODUCTS 
oliTest('win7.nightly.test', 'checkAndWaitForInstalledProduct.py', 'esxi', 'opsi-local-image-prepare', 'opsi-local-image-win7', PRODUCTS) 
) 
} 

产品是一个文本框变量,enetered在构建开始

功能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值被正确地打印到詹金斯只要功能oliProd(日志 )被称为测试在下面的块

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

的FORR循环而没有任何错误消息未能写入它与'多线''COMMAND'''存在错误,因为$ {SERVERID}没有展开并留空

任何建议如何使事情工作?

干杯

回答

0

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

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