2016-12-29 32 views
1

私はJenkinsのパイプラインスクリプトを持っています。ほとんどの場合、うまく動作し、キャッチしようとすると致命的なエラーを引き起こすほとんどのものを取り囲んでいます。しかし、実際には予期せぬことが起こり、ビルドに失敗する前に最終報告をするために安全なキャッチができるようにしたいと思います。Jenkinsでパイプラインエラーを検出するにはどうすればよいですか?

最終的なデフォルトの「ステージ」はありませんエラーが検出されなかった場合に実行される定義ができますか?

+0

あなたはそれを 'try {} finally {}'にまとめることができます – Rik

答えて

4

次の例のように、大きなtry/catch/finally {}ブロック内のすべてのビルド段階をラップすることによってそれを行うことができます。すでに私が指摘したいと思いスクリプトパイプラインのために答えられますが

node('yournode') { 
    try { 
     stage('stage1') { 
      // build steps here... 
     } 
     stage('stage2') { 
      // .... 
     } 
    } catch (e) { 
     // error handling, if needed 
     // throw the exception to jenkins 
     throw e 
    } finally { 
     // some common final reporting in all cases (success or failure) 
    } 
} 
0

その宣言型のためのパイプラインは、これはpost sectionで行われます

pipeline { 
    agent any 
    stages { 
     stage('No-op') { 
      steps { 
       sh 'ls' 
      } 
     } 
    } 
    post { 
     always { 
      echo 'One way or another, I have finished' 
      deleteDir() /* clean up our workspace */ 
     } 
     success { 
      echo 'I succeeeded!' 
     } 
     unstable { 
      echo 'I am unstable :/' 
     } 
     failure { 
      echo 'I failed :(' 
     } 
     changed { 
      echo 'Things were different before...' 
     } 
    } 
} 

各ステージには、必要なときに、それは自身のセクションだも持つことができます。