我正在尝试将现有的Jenkins管道转换为新的声明性管道,我想知道如何正确处理邮件通知?
我目前正在使用此代码:
node { try { ... currentBuild.result = 'SUCCESS' } catch (any) { currentBuild.result = 'FAILURE' throw any } finally { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "baptiste.wicht@gmail.com", sendToIndividuals: true]) } }
它运作良好,但我看不到如何使用新的声明性语法。我认为可以通过使用post()和其他通知来完成某些操作,但我不知道具体如何做。我已经试过了:
post { always { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "baptiste.wicht@gmail.com", sendToIndividuals: true]) } }
但是问题在于它不会发送任何“返回正常”邮件。
我如何在Jenkins声明性管道中使用Mailer插件来发送“返回正常”邮件?
是否应该再次对所有声明性语法使用try / catch?
问题在于,在声明式的post部分中,currentBuild.result未设置为SUCCESS。虽然设置了FAILURE和ABORTED。因此,此刻的行为目前似乎不一致。
我改进了如何为Jenkins管道获得相同的Mailer行为以更好地处理这种情况的答案:
pipeline { agent any stages { stage('test') { steps { echo 'some steps' // error("Throw exception for testing purpose..") } } } post { always { script { if (currentBuild.result == null) { currentBuild.result = 'SUCCESS' } } step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "test@test.com", sendToIndividuals: true]) } } }