当一个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: 'xxx@runnable.run',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: 'xxx@runnable.run',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: 'xxx@runnable.run',body: EMAIL_CONTENT)
}
}
}
}
测试正常之后我们就可以把post那块添加到其他的Jenkins pipeline了!

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

Successful

Aborted
