前のステージが失敗した場合でも、スクリプトパイプラインの実行を継続する方法はありますか?ジョブ全体が失敗する前にビルドが失敗したときに、特定のコマンド(クリーンアップ)を実行する必要があります。
通常のアプローチは、try
ブロック内でステップをラップすることです。
try {
sh "..."
} catch (err) {
echo "something failed"
}
// cleanup
sh "rm -rf *"
痛みを和らげ、パイプラインコードを読みやすくするために、これを別のメソッド ここでは私のグローバルライブラリコード にカプセル化しました。
別のアプローチ、特に。 宣言型パイプライン( blog 、 presentation )がこの問題のために作成されました。
受け入れられた回答は、ステージを失敗させることも、不安定としてマークすることもありません。ステージを失敗させ、パイプラインの実行を継続し、ビルドの結果を選択することが可能になりました。
pipeline {
agent any
stages {
stage('1') {
steps {
sh 'exit 0'
}
}
stage('2') {
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "exit 1"
}
}
}
stage('3') {
steps {
sh 'exit 0'
}
}
}
}
上記の例では、すべてのステージが実行され、パイプラインは成功しますが、ステージ2は失敗と表示されます。
ご想像のとおり、buildResult
とstageResult
を自由に選択して、不安定な状態にしたい場合に備えてください。ビルドに失敗して、パイプラインの実行を続行することもできます。
これはかなり新しい機能なので、Jenkinsが最新であることを確認してください。
post {
always {
cleanWs()
}
}
}
残りが失敗しても、常にジョブをクリーンアップします