簡體   English   中英

詹金斯注入環境變量

[英]Jenkins inject environment variable

在Jenkins的工作中,我正在執行一些駐留在前置步驟構建中的操作,例如執行shell腳本。 通過使用Jenkins插件“EnvInject”,我想將環境變量注入我的maven構建(單元測試),以便可以在我的Java單元測試中使用它們。 在shell腳本里面我做了類似的事情:

echo "ip=$IP" >> unit-test.properties

構建Jenkins時輸出以下內容:

[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path 'unit-test.properties'
[EnvInject] - Variables injected successfully.

但是我的Java代碼(單元測試)中沒有“ip”變量。 當我對System.getProperties() and System.getenv()進行完整打印時,我沒有看到“ip”已登記。

我是否需要對maven執行任何特殊操作才能將變量傳遞給我的Java代碼? 還有別的錯嗎?

從這一點開始,我幾乎陷入困境,我確實希望從前一步中將一個key=value注入到我的Java代碼中。

我的解決方案

創建“構建自由式軟件項目”。

  1. Jenkins> New Item>構建一個自由風格的軟件項目
  2. 添加第一步:執行shell @ Build,並將echo key=value對執行到.properties文件
  3. 添加第2步:注入環境變量,使用步驟2中定義的.properties文件
  4. 添加第3步:調用頂級Maven目標

可以使用步驟2中定義的key訪問所有自定義環境變量。 這是我發現從shell到java注入環境變量的唯一方法。

如上所述。

我的項目中有類似的要求,除了我的項目是Maven。 要使用jenkins中的變量值到我的java代碼,我在“Build- > Advanced-> JVM Options”中使用了-DargLine =“ - DEnv = $ Environment ”。 從我的java代碼中,我使用System.getProperty()獲取了“Env”的值。 FYI“Environment”是我的Jenkins變量,“Env”是變量,它將從jenkins傳遞的值存儲到其變量(Environment)中,並使用System.getProperty()在java代碼中獲取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM