我有以下post
失败部分:
post {
failure {
mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed",
body: """Build ${env.BUILD_URL} is failing!
|Somebody should do something about that""",
to: "devel@example.com",
replyTo: "devel@example.com",
from: 'jenkins@example.com'
}
}
我想在错误消息正文中包含构建失败的原因。
我该怎么做?
如果没有,有没有办法将构建日志文件附加到电子邮件?
答案 0 :(得分:6)
我不知道如何通过空气自动检索故障原因。
但是,您可以使用"发布{failure {"在每个阶段中阻塞至少将其失败的阶段捕获到环境变量(例如env.FAILURE_REASON)中,并在最终(全局范围)通知块中访问env var。
要获得更多粒度,您可以重用相同的全局env变量机制,但使用try {} catch {}块来捕获哪个特定步骤失败。
一个通用的例子是:
pipeline {
stages {
stage('Build') {
steps {
...
}
post {
failure {
script { env.FAILURE_STAGE = 'Build' }
}
}
}
stage('Deploy') {
steps {
...
}
post {
failure {
script { env.FAILURE_STAGE = 'Deploy' }
}
}
}
...
}
post {
failure {
mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed",
body: """Build ${env.BUILD_URL} is failing in ${env.FAILURE_STAGE} stage!
|Somebody should do something about that""",
to: "devel@example.com",
replyTo: "devel@example.com",
from: 'jenkins@example.com'
}
}
}
从技术上讲,您甚至可以根据失败的阶段进行一些自动分类,并发送更有针对性的通知,甚至创建特定的(例如Jira)门票。
要将控制台日志附加到电子邮件通知,您需要查看 emailext和' attachLog:true'属性