跳到主要内容

为你的Jenkins添砖加瓦,构建成功发送邮件到指定邮箱(Jenkinsfile版)

当一个pipeline 的Stage过多,或者某个Stage太长时,我们一直打开Jenkins等着它部署完成是不现实的,等待是最难熬的一件事了。所以要是Jenkins部署完自动通知我们就好了。

安装Extended E-mail Notification插件

这里我们要用到Jenkins的一个插件叫Email Extension Plugin,可以在Jenkins的插件管理中找到。

配置Email Extension Plugin

在配置Email Extension Plugin之前,我们需要准备一个用来发送邮件的邮箱,这里我以腾讯的企业邮箱举例,其他的邮箱也是可以找到类似配置的。

找到发送服务器配置,记录地址和端口

回到Jenkins进行配置:

在Dashboard→Manage Jenkins→Configure System,

Jenkins Location配置

Extened E-mail Notification配置,

  • 填入刚刚在企业邮箱中找到的发送服务器域名和端口
  • Default Content Type选择为HTML
  • 其他的配置保持默认即可

Jenkins自带的邮件通知配置

新建Jenkins pipeline进行测试

配置

在配置中,只需要注意的是最后的Pipeline, 我们通过Jenkinsfile发送邮件出去,包括邮件模板,这里我们选择Pipeline script

Pipeline script

  • 添加一个Stage:只需要输出一下Hello World就行
  • 添加post:post可以根据 pipeline 或阶段的完成状态,post 部分分成多种条件块,这里处理了三种情况的success,failure,aborted

post的详细解释:https://www.jianshu.com/p/909cd0ce98d8

  • EMAIL_CONTENT拼接邮件模板,为html格式,emailext最后触发邮件,当中的一些$PROJECT_NAME$JOB_DESCRIPTION等是Jenkins在构建时的内置参数。to: 对应的就是需要接受邮件的邮箱
pipeline {
agent any

stages {
stage('Hello') {
steps {
echo 'Hello World'

}
}

}
post {
success {
script {
EMAIL_CONTENT = ''
EMAIL_CONTENT += '<hr/>(自动化构建邮件,无需回复!)<br/><hr/>'
EMAIL_CONTENT += '项目名称:$PROJECT_NAME<br/><br/>'
EMAIL_CONTENT += '项目描述:$JOB_DESCRIPTION<br/><br/>'
EMAIL_CONTENT += '运行编号:$BUILD_NUMBER<br/><br/>'
EMAIL_CONTENT += '运行结果:$BUILD_STATUS<br/><br/>'
EMAIL_CONTENT += '触发原因:${CAUSE}<br/><br/>'
EMAIL_CONTENT += '构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><br/>'
EMAIL_CONTENT += '构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><br/>'
EMAIL_CONTENT += '详情:${JELLY_SCRIPT,template="html"}<br/>'
EMAIL_CONTENT += '<hr/>'
emailext(subject: '${PROJECT_NAME}构建成功!',to: '[email protected]',body: EMAIL_CONTENT)
}
}
failure {
script {
EMAIL_CONTENT = ''
EMAIL_CONTENT += '<hr/>(自动化构建邮件,无需回复!)<br/><hr/>'
EMAIL_CONTENT += '项目名称:$PROJECT_NAME<br/><br/>'
EMAIL_CONTENT += '项目描述:$JOB_DESCRIPTION<br/><br/>'
EMAIL_CONTENT += '运行编号:$BUILD_NUMBER<br/><br/>'
EMAIL_CONTENT += '运行结果:$BUILD_STATUS<br/><br/>'
EMAIL_CONTENT += '触发原因:${CAUSE}<br/><br/>'
EMAIL_CONTENT += '构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><br/>'
EMAIL_CONTENT += '构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><br/>'
EMAIL_CONTENT += '详情:${JELLY_SCRIPT,template="html"}<br/>'
EMAIL_CONTENT += '<hr/>'

emailext(subject: '${PROJECT_NAME}构建失败!',to: '[email protected]',body: EMAIL_CONTENT)
}
}
aborted {
script {
EMAIL_CONTENT = ''
EMAIL_CONTENT += '<hr/>(自动化构建邮件,无需回复!)<br/><hr/>'
EMAIL_CONTENT += '项目名称:$PROJECT_NAME<br/><br/>'
EMAIL_CONTENT += '项目描述:$JOB_DESCRIPTION<br/><br/>'
EMAIL_CONTENT += '运行编号:$BUILD_NUMBER<br/><br/>'
EMAIL_CONTENT += '运行结果:$BUILD_STATUS<br/><br/>'
EMAIL_CONTENT += '触发原因:${CAUSE}<br/><br/>'
EMAIL_CONTENT += '构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><br/>'
EMAIL_CONTENT += '构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><br/>'
EMAIL_CONTENT += '详情:${JELLY_SCRIPT,template="html"}<br/>'
EMAIL_CONTENT += '<hr/>'

emailext(subject: '${PROJECT_NAME}构建取消!',to: '[email protected]',body: EMAIL_CONTENT)
}
}
}
}

测试正常之后我们就可以把post那块添加到其他的Jenkins pipeline了!

构建效果

完成上面的配置之后进行构建,可以收到对应邮件就完成了!

Successful

Aborted