2015-10-22 233 views
1

我目前正在研究如何最好地使用詹金斯工作流腳本中的並行步驟,我只是想澄清我如何工作的理解。詹金斯工作流並行步驟和詹金斯配置

parallel(firstTask: { 
    node { 
     // Do some stuff 
    } 
}, secondTask: { 
    node { 
     // Do some other stuff 
    } 
}) 

在這種情況下,將每一項任務,因爲它包含在節點內利用每一個執行者?如果我沒有節點塊,該任務仍然會同時運行?

假設最高性能的解決方案是在獨立的從站上運行每個節點?

目前我使用的是一個建立一個單一的主箱有兩個遺囑執行人(儘管因爲它的四核機器,我想我可能會增加這一點),我只是想給法官的最好辦法

利用平行步驟或者確實在這個設置中是不值得擔心的。

回答

4

如果我沒有節點塊,任務仍然會同時運行?

是的,這樣的:

parallel(firstTask: { 
    // Do some stuff 
}, secondTask: { 
    // Do some other stuff 
}) 

將運行非連續。

例如與構建流程插件:

build("job 1") 

    parallel 
    (
     {build("job 2")} 
     {build("job 3")} 
    ) 

    build("job 4") 

如果你有2個執行者,那麼你可以並行運行2點的工作。 如果您想要並行運行更多作業,則需要增加執行程序編號(通過節點配置)。 對於少數工作,這可能會奏效,但是您可以快速引入混亂的鏈接作業​​定義。

這就是爲什麼你也可以看看多椎插件。

它允許定義「階段」。階段按順序執行。 但每個「階段」可以並行執行多個作業。 這允許執行以下工作流程:「處理階段1的並行作業(直到全部完成),然後進入階段2」。

大概最高效的解決方案是運行在單獨的從屬每個節點?

這是不容易回答。這取決於項目。

當開發人員想要快速獲取構建工件時,經常會使用面向性能的Jenkins設置。

我會嘗試用一個盒子工作,並擊中減少總建造時間目標定義工作量最大的時候大家介紹下奴隸。換句話說:您可以密切關注CPU利用率,並測量/比較構建時間,同時試驗不同的Jenkins設置,可能是A/B測試。

0

試試這個, link

您也可以運行帶有參數傳遞並行作業。

例如:

parallel 
    (
    {build("job 1", param1:"value1",param2:"value2")} 
    {build("job 2",param1:"value1")} 
    ) 
+0

我認爲對於構建流程這就是插件不工作流程。 – user3617723