2014-09-19 112 views
4
共享變量

我使用詹金斯測試/建造的目的,所以我創建了這個配置的多椎項目:詹金斯:在多椎

  1. 測試工作
  2. 構建工作
  3. 安裝工作

MultiJob從Master Jenkins啓動,但其他作業從其他節點啓動。 構建作業執行一個創建BUILD_ID的shell腳本。 現在,我想將BUILD_ID作爲參數傳遞給安裝作業。 我該怎麼做?我唯一的選擇是使用屬性文件?

非常感謝

回答

3

要使用我要描述的建議,您將需要Parameterized Trigger插件。將自定義參數傳遞到下游作業的一種方法是將密鑰對(key=value)存儲在文件中,並在調用下游(本例中爲作業B)作業時通過選擇Parameters from properties file選項指定相同的文件。請參閱下面的截圖:

enter image description here

現在,您可以通過使用$BUILD_ID訪問下游的工作「B」的變量。您還想啓用選項Don't trigger if any files are missing

+4

我看到這是被接受的答案,它真的回答了這個問題嗎?我和@Ligio具有完全相同的情況,它是一個** MultiJob **,需要將參數從_build_傳遞到_deploy_作業。值來自_build_作業,但_deploy_作業**不是_build_作業的下游**作業。它們按順序運行,但是作爲父代** MultiJob **的階段。而且,它們運行在不同的奴隸機器上。我看不出這個解決方案如何工作。任何提示將不勝感激。 [看起來像。](https://s21.postimg.org/x82wux0qv/multijob.png) – topr 2016-08-26 10:42:39

+1

@topr我也有同樣的問題。任何進展或解決方法? – polavishnu 2016-11-25 08:03:33

+0

@polavishnu是的,每個階段的作業都有多個作業級別添加的env變量。對於問題中的情況,只需將BUILD_JOB_BUILD_ID(或BUILD_JOB_BUILD_NUMBER,不記得確切)環境變量的值傳遞給安裝作業就足夠了。 – topr 2016-12-06 18:36:35

1

首先,你需要添加到「安裝工作」被稱爲「BUILD_ID」,然後一旦你的構建工作完成後,你可以在「觸發參數化的基礎上對其他項目」,並添加一個字符串參數未來建設作爲BUILDID =%BuildID%

有關在詹金斯paramterized工作的詳細信息請閱讀以下鏈接的參數: https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

,你可能需要安裝一個插件爲。上面的鏈接。

1

您可以在多作業階段通過使用預定義參數選項來傳遞參數BUILD_ID

步驟如下:

  • 進入配置頁面,通過點擊您的多椎的配置鏈接
  • 點擊高級按鈕,你要傳遞的參數工作的;
  • 點擊添加參數,請選擇Predefined parameters。然後創建一個您自己選擇的參數名稱,並將它分配給它BUILD_ID;
  • 通過在下游作業中啓用This build is parameterized option來創建相同的參數,您想要接收定義的參數。然後,您可以在腳本中使用相同的代碼
3

問題問如何在作業之間爲MultiJob項目傳遞值,而不是參數化觸發器。參數化觸發器可能不是一個好的解決方案,因爲下游作業將在MultiJob父級範圍之外執行。傳遞變量多椎子作業之間,

  1. 寫變量屬性文件中的第一子作業
  2. 「存檔文物」爲生成後的行動在第一子作業
  3. 之間第一個和第二個子作業,插入一個「從其他項目複製人工製品」的版本。將項目名稱設置爲您的第一個子作業的名稱以及將哪個構建版本設置爲「由當前MultiJob構建觸發的構建」。在「要複製的工件」中添加您的屬性文件。
  4. 在您的第二個子作業中,在「高級...」下,從屬性文件添加參數 - >參數,並在那裏輸入您的屬性文件名。你的第二階段現在會有你的第一階段通過的變量。