在我的Jenkins管道中,我通常使用post
声明函数来向我发送电子邮件,以防管道失败。post
函数的简单语法如下:
post {
failure {
mail to: 'team@example.com',
subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}"
}
}
在上面的电子邮件中,我还想提到管道的哪个阶段(假设管道有5到6个阶段)失败了。我该怎么做?任何帮助都非常感谢。
对上述要求的扩展将是向用户提供(已失败阶段的)实际错误日志,作为失败通知电子邮件的一部分。
想法是,当用户收到jenkins的失败通知时,他应该知道管道的哪个阶段失败了,沿着错误日志。
先谢谢你了。
1条答案
按热度按时间yftpprvb1#
有一个叫做
env.STAGE_NAME
的变量可以使用。但是,在您的情况下,您可能需要将stage名称存储在不同的变量中,因为当您在post
stage中获取env.STAGE_NAME
时,结果将是Declarative: Post Actions
。相反,您需要将阶段名称存储在所有阶段的变量中。因此,一旦一个阶段失败-Jenkins将不会继续下一个阶段,因此您将有“失败”阶段的名称。下面是一个例子:
也许有更好的方法,但到目前为止我还没有找到。
关于日志-从JENKINS-40526开始,您可以使用API并从那里获得日志文件,但我不确定您是否可以从管道中获得所需的参数。另一种解决方案是使用emailext并通过电子邮件发送整个构建日志文件:
emailext attachLog: true, body: '', compressLog: true, subject: 'Build failed.', to: 'somebody@somewhere.com'