2016-12-29 48 views
1

我有一個詹金斯管道腳本,大部分工作正常,我圍繞大多數事情,將嘗試捕獲引發致命錯誤。然而,不時會發生意想不到的事情,我希望能夠在構建失敗之前有一個安全的捕獲所有可用的最終報告。如何在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...' 
     } 
    } 
} 

每個階段也可以在需要時它自己的部分。