2017-02-23 41 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中進行迭代。