我如何向Jenkins管道添加一个旧式的构建后任务,当构建失败时发送电子邮件?我在GUI中找不到管道的“构建后操作”。我知道我可以 Package 整个构建脚本try/catch,但是,当构建脚本很大并且即使手动中止作业也会继续发送电子邮件时,这似乎很难看。我想实现与以前基于email-ext
的后期构建操作相同的功能。
try {
// Do sth
} catch(e) {
emailext body: '$DEFAULT_CONTENT',
recipientProviders: [
[$class: 'CulpritsRecipientProvider'],
[$class: 'DevelopersRecipientProvider'],
[$class: 'RequesterRecipientProvider']
],
replyTo: '$DEFAULT_REPLYTO',
subject: '$DEFAULT_SUBJECT',
to: '$DEFAULT_RECIPIENTS'
throw err
}
6条答案
按热度按时间6yt4nkrj1#
这个答案在我的Jenkins版本中起作用。2.96.
Jenkins pipeline email not sent on build failure - Stack Overflow
mail
步骤的官方文档vnzz0bqm2#
如果只在构建状态发生变化时才采取行动,可以使用post > changed块。
为了检查状态更改为什么状态,您可以使用脚本块结合检查
currentBuild.currentResult
属性的值。就像这样:
fgw7neuy3#
目前,您必须使用
try
-catch
的此过程来获取构建后操作。但在未来,这一步骤是有计划的(实际上是在审查中)。您可以阅读the blog post以获取更多信息(参见声明性管道部分)。另见the Jenkins Jira ticket和the pull request。
更新:
Jenkins声明性管道现在有
post
部分,它将在每次构建结束时有条件地运行步骤。See the docs更多信息sc4hvdpw4#
这在我的Jenkins(当前版本2.164.2和emailext)上运行得很好,带有声明性管道:
您可以控制生成失败或状态更改的电子邮件。此外,我把构建日志的电子邮件体
rfbsl7qr5#
几乎所有以上的答案都是正确的,但这一个我用在后部分时,建设失败。也许这会有用
jxct1oxe6#
为了DRY你的脚本管道,你可以轻松地用你自己的共享库扩展Jenkins,并通过创建
vars/emailOnError.groovy
来定义一个自定义步骤 emailOnError,如下所示:请注意,这个共享方法
emailOnError
来自vars/emailOnError.groovy
,可以这样使用: