我在一個階段中有一個重試塊,嘗試次數為 5。當我為該階段完成所有重試嘗試但仍然失敗時,將跳過進一步的階段并中止管道。我想要的是,即使帶有重試塊的階段失敗,也不能跳過下一個階段,并且應該像往常一樣運行。我到目前為止所嘗試的是,
stage('Run Test') {
try {
echo "Hello World"
}
catch(error) {
retry(5) {
try {
input "Retry?"
echo "Hello World in catch"
}
catch(err) {
//I want here to continue for the next stage rather than skipping the remaining stages and
//abort the pipeline
}
}
}
}
任何幫助都感激不盡。
uj5u.com熱心網友回復:
您可以在catchError步驟旁邊使用重試步驟來實作所需的功能。
catchError:捕獲錯誤并設定所需的構建結果。
如果主體拋出例外,則將構建標記為失敗,但仍然從 catchError 步驟之后的陳述句繼續執行流水線。
拋出例外時步驟的行為可以配置為列印訊息、設定除失敗之外的構建結果、更改階段結果或忽略用于中斷構建的某些型別的例外。此步驟在宣告式流水線中使用或與設定階段結果或忽略構建中斷的選項一起使用時最有用。
因此,您可以使用 包裝您的retry代碼塊,catchError并將構建和暫存結果設定為您想要的值,以防retry塊失敗,無論結果如何,執行都將繼續執行以下步驟。
就像是:
stage('Run Test') {
echo "Hello World"
catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
retry(5) {
// retry code block
}
}
// following steps will always be executed
}
最常用的結果選項是:FAILURE、SUCCESS和UNSTABLE。
在以下答案中查看更多選項和說明
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363198.html
上一篇:在詹金斯中讀取xml
