2013-03-15 515 views
6

我有Jenkins的作業,執行shell部分,其中我有一些變量 BUILD是動態填充的。將變量從shell傳遞給Jenkins中的email-ext

生成執行後,我想將此變量傳遞給email-ext插件默認內容以顯示它的值。

我試過幾種方法沒有成功:

  1. 傳遞默認內容此$ {} BUILD價值無法識別(只有詹金斯環境變量是可見在這方面)
  2. 新定義詹金斯的全球環境變量,並試圖覆蓋其殼層上下文,這顯然是不可能的初始值

任何想法如何做到這一點?

回答

1

使用EnvInject Plugin在「shell部分」中寫入該文件後,從文件中讀取該變量。


一般來說,環境變量永遠不會從子進程回到父進程,這是Windows和Unix操作系統系列的基本特徵。孩子總是獲得父母環境的副本,並且如果它修改了它,它會修改它自己的副本(如果它啓動了任何子進程,它將被複制到任何子進程中)。但是爲了恢復變更,還必須使用其他方法,例如子文件對文件進行所需的更改,然後由父文件進行解析,然後可以基於此文件編輯它自己的環境。

+4

沒有必要。我找到了更簡單的方法來做到這一點。 Email-ext插件支持可編寫Groovy代碼的預先電子郵件腳本。因此,在shell部分中,我將數據寫入文件並使用Groovy腳本,正在讀取該數據並傳遞給MimeMessage變量: String fileContents = new File(「file.txt」)。text msg .setText(fileContents, 「UTF-8」); – 2013-04-26 09:41:51

+1

你可以分享完整的groovy腳本,從文件加載變量 – user2400564 2016-05-23 02:42:25

1

您可以通過建立參數通過電子郵件分機插件:

$ {ENV,VAR =「資本化:VAR_NAME」}

這樣一來,我看到在接收的郵件中的變量值。

+2

你可以通過包括一個具體的例子來擴展一下嗎? – Taegost 2016-06-22 12:26:34

+1

一個例子確實有助於理解這是如何工作的。 – 2017-03-10 15:29:29

+0

在這個特定情況下,'$ {ENV,var =「BUILD」}'應該完成這項工作。 – toppur 2017-11-29 21:25:38