我有以下post失败部分:
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' } }
我想在错误消息的正文中包含构建失败的原因。
我怎样才能做到这一点?
如果没有,是否可以将构建日志文件附加到电子邮件?
我不知道一种凭空自动获取故障原因的方法。
但是,您可以在每个阶段中使用“ post {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’属性