Jenkinsのパイプラインステップをtry catchブロックで処理しました。場合によっては手動で例外をスローします。ただし、以下のエラーが表示されます。
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new Java.io.IOException Java.lang.String
ScriptApprovalセクションを確認しましたが、保留中の承認はありません。
例外でプログラムを中止する場合は、パイプラインステップerror
を使用して、エラーでパイプラインの実行を停止できます。例:
try {
// Some pipeline code
} catch(Exception e) {
// Do something with the exception
error "Program failed, please read logs..."
}
成功ステータスでパイプラインを停止する場合は、おそらくパイプラインを停止する必要があることを示す何らかのブール値が必要です。
boolean continuePipeline = true
try {
// Some pipeline code
} catch(Exception e) {
// Do something with the exception
continuePipeline = false
currentBuild.result = 'SUCCESS'
}
if(continuePipeline) {
// The normal end of your pipeline if exception is not caught.
}
これがJenkins 2.xでのやり方です。
注:エラー信号は使用しないでください。ポスト手順はスキップされます。
stage('stage name') {
steps {
script {
def status = someFunc()
if (status != 0) {
// Use SUCCESS FAILURE or ABORTED
currentBuild.result = "FAILURE"
throw new Exception("Throw to stop pipeline")
// do not use the following, as it does not trigger post steps (i.e. the failure step)
// error "your reason here"
}
}
}
post {
success {
script {
echo "success"
}
}
failure {
script {
echo "failure"
}
}
}
}
Exception
以外のタイプの例外はスローできないようです。 IOException
なし、RuntimeException
なしなど.
これは動作します:
throw new Exception("Something went wrong!")
しかし、これらはしません:
throw new IOException("Something went wrong!")
throw new RuntimeException("Something went wrong!")