2012-09-04 78 views
6

Jenkins Join Plugin允許在所有直接下游作業完成後運行作業。Jenkins - 在所有下游作業完成後觸發作業,不僅是直接作業

但是,我怎樣才能配置一個工作,所有下游工作完成後運行,不僅是直接的工作?

此圖顯示的作業流程觸發我預計:

      A 
          | 
        --+----+------+-- 
         |   | 
         v   v 
         B   C 
         |   | 
    --+--------+-----+---+--  | 
     |  |   |  | 
     v  v   v  | 
     D  E   F  | 
     |  |   |  | 
     v  |   |  | 
     G  |   |  | 
     |  |   |  | 
    ---+--------+----+----+-------+-- 
        | 
        v 
        J 

我將加入對工作的觸發器觸發J.但是工作j再次起動B和C完成最後的工作,不等待作業D,E,F和G.

this answer及其評論中,它表示路徑可以是多個作業深度和指紋必須正確使用。但我無法弄清楚如何使它工作。

回答

5

只有當所有事情都被分解爲依賴關係的「鑽石」時,Join插件才能工作:一個啓動工作,一個或多個下游工作,但只有一個深度級別(D和G是圖表中兩個深度級別),其次是一個加入的工作。您的依賴性結構不遵循該菱形圖案。

對於這種特殊情況,我會使用Promoted Builds Plugin。設置作業A進行促銷,當被觸發時,運行作業J.爲該促銷啓動觸發器是B,C,D,E,F,G的成功完成。或者如果想要最小化它:G,EF,C 。只要確保指紋設置正確。

對於指紋識別,在作業A期間生成一個文件(或選擇一個現有的文件)。僞造它併爲其指紋。在所有以下作業B-G中,使用CopyArtifact插件將該文件檢索到該作業並在其中指紋。

+0

你可以詳細說一下指紋和提升生成設置?我問了幾乎相同的問題[這裏](http://stackoverflow.com/questions/26101765/jenkins-pipeline-top-level-join-gets-triggered-before-sub-level-join) – dstj

+0

完成 - 答案已經更新了指紋識別的附加信息。 –

3

如果有人正在尋找簡單的方法只是使用JobFanIn plugin。這個插件將允許你設置觸發器的作業J 一次C,E,F & G是建立和穩定

+1

正是我需要的,簡單的構建依賴項解決方案謝謝。 – dkanejs

+0

不允許您將參數從上游作業傳遞到合併作業。 –

+0

這是一個限制,我猜。 May插件可以被增強來做到這一點,但是對於多個上游項目,傳遞參數將不得不處理它的下游作業。將看看這是否可以添加到插件中 – Yogesh

相關問題