2013-05-28 77 views
7

是否有可能通過來自多個上游作業的Join插件副本工件觸發Jenkins作業?在Jenkins中複製來自多個上游作業的工件

我試圖建立一個帶有「鑽石」作業的Jenkins配置:my-trigger運行並生成兩個作業,my-fork1和my-fork2,它們可以同時運行並花費不同的時間,並且一旦兩個叉都完成,Join插件會啓動my-join作業。

my-trigger,my-fork1和my-fork2中的每一個都會創建和指紋工件(如文本文件)。

我想使用「複製來自其他項目的工件」工具,並將「哪個構建」參數設置爲「觸發此作業的上游構建」,從my-join中的每個上游作業中複製工件。但是,我看到這樣的輸出的控制檯我的聯接:

建設遠程集結機工作區/路徑/到/工作區/從「我 - 我 - 加入

複製1個神器我-與fork1 「集結號63

無法找到一個構建從神器副本觸發」從建號63

複製1個神器」:我-fork2

並且作業失敗。在這種情況下,my-fork2首先完成,因此my-fork1觸發了連接步驟。我相信這意味着my-join只有my-fork1和my-trigger的記錄爲上游記錄。如果my-fork1首先完成,那麼my-fork2會啓動連接,並且嘗試從my-fork1複製時作業失敗。

如果我更改配置以從構建「最新成功構建」中複製構件,那麼構建成功,但my-trigger可能會連續運行多次,因此不能保證my-join會加入相關構件。

如何獲取聯接步驟以從多個叉上游複製工件?

注意:第二點this question似乎是要求同樣的事情,但唯一的答案沒有解決它,並已被接受。

感謝 張量積

回答

9

如果你的版本是參數與聯接金剛石的每次運行的唯一參數,您可以使用該參數在CopyArtifact插件來確定建立中複製。你會想要指定「最新成功構建」並用參數和值來限定它。

我們的工作環境類似,多個同時運行的聯合鑽石。構建中的參數允許下游作業從上游作業中獲取正確的構件。

+0

啊,感謝。最後,我使用觸發構建的BUILD_TAG設置所有下游構建的UNIQUE_ID參數,並將其用作加入步驟的標識標記。 – laffoyb

+0

你能提供確切的字符串使用,以實現這一目標嗎?我遇到問題... – dstj

+0

恐怕我不在我將此修復程序放置到位的地方工作,所以我沒有準確的字符串。爲了我的記憶,我使用了Parameterized Trigger Plugin來啓動下游構建。我使用'UNIQUE_ID = $ {BUILD_TAG}'手動設置了一個參數。 – laffoyb

0

步驟通過從詹森鍛細機所提供的解決方案中的步驟設置:

項目的依賴關係: 金剛石> fork-> diamond_ready

工程 「叉」: 字符串參數 「UNIQUE_ID」(僅虛設不內部使用) (創建一個artifcat和存檔文物)

工程「diamond_ready」 字符串參數:UNIQUE_ID 從另一個項目複製文物3210項目名稱:叉 參數過濾器:UNIQUE_ID = $ {UNIQUE_ID}

工程 「鑽石」:在其他項目 觸發參數構建項目建設:叉 Predefinded參數:UNIQUE_ID = $ {BUILD_TAG} 加入觸發: 後加入行動:在其他項目上 項目建設 觸發參數構建:diamond_ready 預定義發生器參數:UNIQUE_ID = $ {} BUILD_TAG

相關問題