2017-10-19 153 views
1

我正在嘗試使用groovy DSL寫一個腳本化的Jenkinsfile,它將在一組階段中具有並行步驟。腳本jenkinsfile並行階段

這裏是我的jenkinsfile:

node { 
stage('Build') { 
    sh 'echo "Build stage"' 
} 

stage('API Integration Tests') { 
    parallel Database1APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database1APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     }    

    }, Database2APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database2APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 

    }, Database3APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database3APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 
    } 
} 

stage('System Tests') { 
    parallel Database1APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database1APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     }    

    }, Database2APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database2APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 

    }, Database3APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database3APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 
    } 
} 
} 

我想有三個階段:建立;集成測試和系統測試。 在兩個測試階段中,我希望並行執行3組測試,每組測試都針對不同的數據庫。

我有3個可用的執行者。一個在主人和2個代理商,我希望每個並行步驟在任何可用的執行器上運行。

我已經注意到的是,我的運行後,管道,我只看到了3個階段,每個標出來爲綠色。我不想查看該階段的日誌,以確定該階段的任何並行步驟是否成功/不穩定/失敗。

我想會看到我的測試階段內的3個步驟 - 標記爲綠色,黃色或紅色(成功,不穩定或失敗)。我已經考慮將測試擴展到他們自己的階段,但已經意識到並行階段不被支持(有誰知道這是否會被支持?),所以我不能做到這一點,因爲管道將需要很長的時間太久無法完成。

任何有識之士將不勝感激,謝謝

回答

0

我已經在並行塊多次使用stage{}。然後每個階段都顯示在舞臺視圖中。包含parallel的父階段不包括所有並行階段的時間安排,但每個並行階段在階段視圖中顯示。

在藍色海洋,並行級單獨出現,而不是示出的階段。如果有父級,則顯示爲並行級的父級。

如果您沒有相同的體驗,可能是因爲插件升級。

+1

你能給其中已使用並行塊內的級的例子?我正在努力尋找關於此的任何文檔 –

0

下面是從他們的docs一個例子:

並行執行

在部分上面的示例運行在一個線性串聯跨兩個不同的平臺上的測試。在實踐中,如果執行make check需要30分鐘才能完成,那麼「測試」階段現在需要60分鐘才能完成!

幸運的是,管道具有內置的功能,用於執行腳本管道部分平行,在恰當地命名爲並行步驟實現。

重構上面的例子中使用的並行步驟:

// Jenkinsfile (Scripted Pipeline) 


stage('Build') { 
    /* .. snip .. */ 
} 

stage('Test') { 
    parallel linux: { 
     node('linux') { 
      checkout scm 
      try { 
       unstash 'app' 
       sh 'make check' 
      } 
      finally { 
       junit '**/target/*.xml' 
      } 
     } 
    }, 
    windows: { 
     node('windows') { 
      /* .. snip .. */ 
     } 
    } 
} 
相關問題