原文发布于:为你的 Jenkins 添砖加瓦,构建成功发送邮件到指定邮箱(Jenkinsfile 版),欢迎使用 RSS 订阅获取最新更新。
当一个 Jenkins 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
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于