2014-08-27 61 views
2

我有詹金斯建立過程,我使用Python腳本來計算新的版本:如何設置與python腳本詹金斯環境變量

import string 
import os 
print 'Current version is ' + os.environ['POM_VERSION'] 
versionArr = string.split(os.environ['POM_VERSION'], '.') 
versionArr[2] = str(int(versionArr[2]) + 1) 
if int(versionArr[2]) > 100: 
    versionArr[2] = '0' 
    versionArr[1] = str(int(versionArr[1]) + 1) 
if int(versionArr[1]) > 100: 
    versionArr[0] = str(int(versionArr[0]) + 1) 
    versionArr[1] = '0' 
print versionArr 
print 'New version will be: ' + versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2] 
os.environ['NEW_POM_VERSION'] = versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2] 

然後我想運行

versions:set -DnewVersion=${NEW_POM_VERSION} -DgenerateBackupPoms=false 

在不同的步驟。但${NEW_POM_VERSION}保持不變,並不會轉換爲我設定的值。

我在試圖以錯誤的方式調用變量。我也嘗試使用$NEW_POM_VERSION哪些沒有工作以及

所以我如何正確地將變量導出到我的環境。

謝謝。

回答

1

詹金斯爲每個構建步驟(和構建後步驟)都產生了一個新的環境。在其中設置一個值不會被保留。您需要EnvInject plugin

  • 在您的python腳本中,將最終值寫入屬性文件,格式爲param=value
  • 接下來,配置一個EnvInject構建步驟以從該屬性文件加載變量。
  • 此時,那些加載的屬性將作爲環境變量可用於此作業的所有其他構建步驟/構建後步驟。
+0

我知道這有點偏離主題。但是環境變量在構建過程中被限制了嗎?我無法改變一些重要的系統變量嗎? – Gleeb 2014-08-27 15:34:29

+1

是的,這就是生成構建步驟的單獨環境的全部原因:因此,您不能**弄亂系統(以及其他正在運行的Jenkins作業)。當然,如果你使用'setx'或類似的東西,你可以故意破壞它。 – Slav 2014-08-27 16:08:02