2017-05-29 16 views
3

我開始使用Jenkins聲明式管道。現在,我想有作爲梅勒插件的Usage定義相同的電子郵件通知的行爲:如何爲Jenkins管道獲取相同的郵件行爲

  1. 每個構建失敗將觸發新的電子郵件。
  2. 構建失敗(或不穩定)後成功構建觸發新電子郵件,表明危機已經結束。
  3. 成功構建後的不穩定構建觸發新電子郵件,表明存在迴歸。
  4. 除非已配置,否則每個不穩定的構建都會觸發新的電子郵件,表明迴歸仍然存在。

我讀到Notifications in Pipelines,但它不會通知基於上述規則。另外,在構建失敗的情況下,它不包含消息正文中的控制檯輸出的一部分。

有沒有人知道如何在聲明式管道中做到這一點?

回答

2

使用以下代碼,您可以在帖子部分使用郵件程序插件。這提供了預期的行爲:

pipeline { 
    agent any 
    stages { 
     stage('test') { 
     steps { 
      script { 
       // change to 'UNSTABLE' OR 'FAILED' to test the behaviour 
       currentBuild.result = 'SUCCESS' 
      } 
     } 
     } 
    } 
    post { 
     always { 
      step([$class: 'Mailer', 
      notifyEveryUnstableBuild: true, 
      recipients: "[email protected]", 
      sendToIndividuals: true]) 
     } 
    } 
} 
+0

設置'在管道的開始currentBuild.result =「SUCCESS''是很重要的,否則郵件不會發送出去,見[內部管道梅勒(HTTPS: //stackoverflow.com/questions/37169100/use-jenkins-mailer-inside-pipeline-workflow)。 –

+0

你是對的,currentBuild.result不會自動設置在管道的後期部分。這可能會更好,所以在工作結束時設置currentBuild.result ='SUCCESS'。例如。在帖子部分的開頭。在https://stackoverflow.com/questions/44329032/how-to-send-back-to-normal-notifications-in-jenkins-declarative-pipeline查看我的回答 – Philip