2012-06-06 109 views
2

問題Jenkins/Hudson作業參數在運行時?

比方說,我有一個詹金斯/哈德森的工作(例如自由風格),它有兩個參數PARAM_ONEPARAM_TWO。現在,我不知道這些參數的值,但我可以運行一些腳本(perl/shell)來查找這些參數的值,然後我希望用戶從下拉列表中選擇,然後我可以開始構建。

有沒有辦法做到這一點?

+0

您的意思是在參數化版本(「此版本是參數化」>「選擇」)中進行類似選擇,但是選擇是動態確定的? –

+0

是的,這是正確的。我剛剛發現Extended Choice Parameter插件可以讀取一個屬性文件,而且我只是在每次構建作業時都檢查過它,這正是我想要的。但是有一點小竅門:我如何在腳本中訪問這些參數(例如預構建步驟腳本,perl/shell)? – Moni

+0

我真正的意思是:「在按下」計劃構建「按鈕之後,但在參數頁面顯示之前,如何從腳本設置這些參數的值。」對? –

回答

3

聽起來就像你找到了一個你所需要的插件,它與內置的參數化版本功能非常相似。

要回答第二個問題:當您定義參數化版本時,參數通常會作爲環境變量傳遞給您的作業。所以,你會訪問它們,但是你訪問的環境變量在你的語言,舉例來說,如果你定義的參數PARAM_ONE,你訪問它:

在bash:

$PARAM_ONE 

在Windows批處理:

%PARAM_ONE% 

在Python:

import os 
os.getenv('PARAM_ONE') 

我想這將是相同的擴展選擇參數插件,你正在使用。

+0

謝謝傑克的快速回答。 – Moni

+0

+1用於顯示如何從Python訪問作業參數。 – astraujums

0

只要安裝this,並給出參數,如構建腳本:

的Windows

「構建腳本」 %PARAMONE%%PARAMTWO%

0

在Java中,可以從運行對象訪問這些參數

EnvVars envVars = new EnvVars(); 
envVars = run.getEnvironment(listener); 
for (String envName2 : envVars.keySet()) { 
    listener.getLogger().println(envName2 + " = " + envVars.get(envName2)); 
}