2017-08-30 88 views
2

我有在測試Jenkinsfile以下代碼:詹金斯管道建立步驟 - getBuildVariables()返回空映射

node { 
    stage 'Build' 
    def job1 = build 'Sample_Freestyle' 

    def dur = job1.getDuration() 
    println dur 

    def vars = job1.getBuildVariables() 
    println vars 

    def myMap = [k1:'v1', k2:'v2', k3:'v3'] 
    println myMap 
} 

據我所知,當我使用構建步驟返回一個RunWrapper對象。我試圖讓我的名爲「Sample_Freestyle」測試工作,這在他們時刻運行一個簡單的Windows批處理命令的生成變量:

echo "Hello World" 

每當我運行它,它正確地執行,但是我留下一張空白的地圖。我測試了getDuration()方法,並且按照預期返回。我看了一下RunWrapper類here,它可能是env爲空(大約212行),但這只是一個假設。

有沒有人知道爲什麼我會調用getBuildVariables()時得到一個空的地圖?我是否以錯誤的方式解決了這個問題?

+0

'Sample_Freestyle'是一個參數化作業嗎? –

回答

0

getBuildVariables()返回作業的用戶定義參數,而不是作業的環境變量,如WORKSPACE或BUILD_TAG。

基於Vitalii的評論,我做了一個實驗併爲Sample_Freestyle作業添加了一個參數。當我添加測試字符串參數時,地圖不再是空的!我:

{TEST_PARAMETER=Test Parameter} 

我建議的方法名稱從getBuildVariables改變()來getJob 參數()或getBuild 參數()進行統一命名。