2017-01-13 52 views
1

如何將GO_REVISION從上游管道傳遞到下游管道?如何將GO_REVISION從上游管道傳遞到GO-CD中的下游管道?

我有四條管道,A,B和C管道通過GO_REVISION中的相同git和它們的版本標籤構建應用程序觸發器。

流水線d使用用於部署和它的材料是A,B和C.

然而,我不知道如何從上游管道(A/B/C)至D.共享GO_REVISION

   +--->Pipeline A + 
       |    | 
GIT (Material)+--->Pipeline B +------>Pipeline D (How get upstream GO_REVISION) 
       |    | 
       +--->Pipeline C + 
+0

也許將其寫入上游管道之一中的文件並將其作爲下游管道中的材料提取 – thepirat000

回答

0

這取決於。如果您有任何存儲庫使用案例,則應將GIT(材料)作爲Pipeline-D的相關材料。否則,您可以將GO_REVISION作爲任何上游管道(讓我們設置爲管道A)並在管道D中訪問環境變量$ {GO_DEPENDENCY_LABEL_A}並保存GO_REVISION的標籤。 Image : Setting Pipeline-A label to hold GO_REVISION

在上述圖像改變標籤從$ {material_name}爲$ {material_name [:6]}應該採取僅前6個字母從SHA。

Image : Accessing GO_REVISION in Pipeline D

一般來說,如果你要代表建立使用修訂這種方式被使用。

另一種方法是將其寫入其中一個上游管道中的文件並在下游管道中獲取它。

0

考慮將A,B和C放入一個管道中。

ABC可以作爲任務並行運行。我爲什麼這麼說 - 因爲它會確保ABC始終構建相同的Git提交。如果ABC是獨立的管道,則有可能出現競爭狀況(例如等待代理商,失敗的構建等)。如果ABC在不同版本的源代碼中,GoCD將標記警告。但簡單是最好的。

這樣做,獲得修改到D是通過管道標籤staightforward。

但是,我始終將版本信息寫入平面文件中的構建工件。額外的元數據可以保證生產端代碼的審計能力。您還應該將版本信息注入應用程序用戶界面(如果有)。

相關問題