2013-01-08 160 views
4

我正在使用Jenkins和Testswarm,並且這個pluginforked sources)。Jenkins插件 - 環境變量

我想爲包含Jenkins作業名稱,內部版本號和svn版本號的Testswarm獲取「作業名稱」。

將JOB_NAME置於配置字段沒有幫助,該變量不會被其值替換。

所以我修改了插件源代碼來獲取Jenkins環境變量,但我所得到的都是「null」。

這是罪魁禍首的代碼。 (中的src/main/JAVA/COM/javaclimber /詹金斯/ testswarmplugin /從線205 TestSwarmBuilder.java)

我研究了有關本functionnality了很多,我沒有找到得到變量的工作示例。

public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { 
    ... 
EnvVars envVars = build.getEnvironment(listener); 
    ... 
    envVars.get("JOB_NAME") 
} 

我在Java中並不放心,我被困在這一點。 任何人都有想法嗎?

更新:Java中使用版本
Java版本 「1.6.0_24」
OpenJDK的運行時環境(1.11.5 IcedTea6)(6b24-1.11.5-0ubuntu1〜10.04.2)
OpenJDK的64位服務器VM (內置20.0-b12,混合模式)

回答

9

更換

EnvVars envVars = build.getEnvironment(listener); 

通過

EnvVars envVars = new EnvVars(); 
envVars = build.getEnvironment(listener); 

的伎倆......

+0

我必須要說,謝謝! –

+3

這沒有任何意義......兩個代碼片段都應該產生相同的結果,除了第二個代碼片段創建了一個永遠不會被使用並被直接丟棄的「EnvVars」實例。任何想法*爲什麼*這解決了問題? – Illidanek

+0

謝謝你回答你自己的問題,讓我的生活更輕鬆。 – ojblass

1

您使用的是什麼版本的Java? 據this,獲得一個環境變量,您需要添加以下內容:

String job_name = System.getenv("JOB_NAME"); 

您是否嘗試過這個呢?

此外,我不確定配置字段是什麼樣子,但是您是否嘗試使用$JOB_NAME而不是JOB_NAME