2016-11-15 50 views
11

我有一系列執行快速檢查的階段。即使出現故障,我也想執行它們。例如:繼續Jenkins管道經過失敗階段

stage('one') { 
    node { 
     sh 'exit 0' 
    } 
} 
stage('two') { 
    node { 
     sh 'exit 1' // failure 
    } 
} 
stage('three') { 
    node { 
     sh 'exit 0' 
    } 
} 

舞臺two失敗,所以默認階段three不執行。

通常這將是parallel的工作,但我想在舞臺視圖中顯示它們。在下面的模擬中:

  • 構建#4顯示通常發生的事情。作業two失敗,因此three不運行。
  • 我Photoshopped構建#6顯示我想看到的。作業two失敗並按此方式顯示,但three仍在運行。真正的詹金斯可能會以紅色顯示整個Build#6,這當然很好。

Mock up of desired Stage View result

+3

使用圍繞階段2的try/catch –

+3

或內置'catchError',如果出現異常,它也會將構建標記爲紅色。 – izzekil

+0

謝謝你的精彩評論@EngineerDollery和@izzekil。我確實可以使用try/catch來阻止stage'two'停止管道,但是現在stage'two'被標記爲成功 - 即使它實際上失敗了也是綠色的。 –

回答

1

這應該工作。但是,即使只有一個盒子出現故障,所有盒子都是紅色的,但您可以看到標有錯誤的盒子,因此您可以輕鬆區分失敗的作業。

def indexes = ['one', 'two', 'three'] 

node() { 
    for (index in indexes) { 
     catchError { 
      stage(index) { 
       println index 
       sh '''echo "123"''' 
      } 
     } 
    } 
} 
相關問題