web-dev-qa-db-ja.com

Jenkinsパイプラインで例外をスローする方法は?

Jenkinsのパイプラインステップをtry catchブロックで処理しました。場合によっては手動で例外をスローします。ただし、以下のエラーが表示されます。

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new Java.io.IOException Java.lang.String

ScriptApprovalセクションを確認しましたが、保留中の承認はありません。

13
Yahwe Raj

例外でプログラムを中止する場合は、パイプラインステップ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. 
}
26
Pom12

これが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"
                    }
                }
            }            
        }
5
Learner

Exception以外のタイプの例外はスローできないようです。 IOExceptionなし、RuntimeExceptionなしなど.

これは動作します:

throw new Exception("Something went wrong!")

しかし、これらはしません:

throw new IOException("Something went wrong!")
throw new RuntimeException("Something went wrong!")
4
Marco Roy