2013-08-06 108 views
1

我有一個做以下(除其他事項外)一詹金斯工作:詹金斯EnvInject生成步驟

  1. 讀取用戶環境輸入和SERVERTYPE
  2. 進樣的環境變量代理(最初爲空)作爲構建步驟創建 一個新的變量
  3. 執行shell作爲構建步驟來填充AGENT,基於什麼進入環境 和SERVERTYPE
  4. 使用代理作爲輸入到一個插件作爲一個後生成作用

問題是,AGENT的值似乎沒有持續在「執行shell」構建步驟之外。當我嘗試將它傳遞給構建後動作插件時,它仍然是空白的。

任何人都可以指出我做錯了什麼?我已閱讀文檔,但似乎無法弄清楚。

回答

2

你的問題是,無論你在shell腳本中設置了什麼變量,他們都不會把它弄出來。 對於任何進程都是如此:子進程(你的shell腳本)永遠不會直接影響父進程的環境(詹金斯執行者客戶端)。

如果您需要數據保留,則需要將其存儲在腳本之外;有許多選項將其上傳到服務器或將其存儲在數據庫中,最明顯和最簡單的選擇是將其保存到文件中。

甚至可以用EnvInject支持的語法將值保存到「屬性文件」中,並在「屬性文件路徑」字段中指定路徑。

0

您需要使用要再次注入的環境變量的值填充屬性文件,以便它們能夠存活直到構建後的操作。屬性文件通常駐留在作業的工作區中。

例如使用以下步驟:

  1. 生成步驟 「執行殼」:

AGENT="My agent" echo AGENT=$AGENT > my.properties

  • 生成步驟:「注入環境變量「, 字段」屬性文件路徑「: $WORKSPACE/my.properties

  • 生成後的行動: 「可編輯電子郵件通知」,現場 「默認內容」:

  • Current Agent $AGENT Or ${ENV, var="AGENT"}

    相關問題