Yas*_*ash 13 jenkins jenkins-plugins jenkins-cli jenkins-pipeline
在我的Jenkins管道中,我通常使用post声明性函数向我发送电子邮件,导致管道失败.
该post函数的简单语法如下:
post {
failure {
mail to: 'team@example.com',
subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}"
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的电子邮件中,我还想提一下管道失败的哪个阶段(假设管道有5到6个阶段).我怎样才能做到这一点?任何帮助深表感谢.
上述要求的扩展将是向用户提供(失败的阶段)的实际错误日志,也作为失败通知电子邮件的一部分.
想法是,当用户收到来自jenkins的失败通知时,他应该知道管道的哪个阶段与错误日志一起失败.
提前致谢.
tft*_*ftd 11
有一个env.STAGE_NAME可以使用的变量.然而,在你的情况,你可能需要艺名存储在不同的变量,因为当你得到env.STAGE_NAME一个post阶段的结果将是Declarative: Post Actions.相反,您需要将阶段名称存储在所有阶段的变量中.因此,一旦阶段失败 - 詹金斯将不会继续下一阶段,因此您将拥有"失败"阶段名称.
这是一个例子:
def FAILED_STAGE
pipeline {
agent { label "master" }
stages {
stage("Stage 1") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 1"
}
}
}
stage("Stage 2") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 2"
error "failed for some reason."
}
}
}
stage("Stage 3") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 3"
}
}
}
}
post {
failure {
echo "Failed stage name: ${FAILED_STAGE}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法,但到目前为止我还没有找到它.
关于日志 - 从JENKINS-40526开始,您可以使用API并从那里获取日志文件,但我不确定您是否可以从管道中获取所需的参数.另一种解决方案是使用emailext并通过电子邮件发送整个构建日志文件:
emailext attachLog: true, body: '', compressLog: true, subject: 'Build failed.', to: 'somebody@somewhere.com'
| 归档时间: |
|
| 查看次数: |
5294 次 |
| 最近记录: |