Jenkins 邮件通知
让团队成员实时知道构建的状态很重要,但是我们不可能 24 小时盯着构建面板,最好的方式是构建系统本身知道出现情况时通知什么人。邮件通知是最常用的通知方式,Jenkins 默认支持。
使用 Jenkins 内置的邮件通知功能
这里我们使用 163 邮箱来演示如何在 pipeline 中加入邮件通知。步骤如下:
进入
系统管理
–>系统配置
–>Jenkins Location
设置页面;设置管理员邮箱,该邮箱必须与下面设置的邮箱认证账号一致;如下所示:
注意:这一步是必不可少的,否则在发送邮件通知时会报出
com.sun.mail.smtp.SMTPSend-FailedException: 553 Mail from must equal authorized user
错误。在同一个页面中找到 邮件通知部分,如下:
点击高级按钮,配置
使用 SMTP 认证
,如下所示:
输入用户名,密码(如果启用了授权码,这里需要填入授权码),端口,以及回复地址;
勾选通过发送测试邮件配置,输入收件人地址,点击
Test configuration
,如果配置没有问题,Jenkins 将发送一封测试邮件到收件人邮箱中,并显示:Email was successfully sent
;
在 Jenkin pipeline 的 post 部分加入 mail 步骤,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22pipeline {
agent any
stages {
stage('Deploy QDMWMS Backend Server') {
steps {
........
}
}
}
post {
success {
mail to: '2350686113@qq.com',
body: 'xxxxxxxx',
subject: 'xxxx'
}
failure {
mail to: 'xxxxxxx@qq.com',
body: 'xxxxxxx',
subject: 'xxxx'
}
}
}mail 步骤的关键参数介绍如下:
- subject: 邮件主题
- to: 收件地址
- body: 邮件内容
- from: 发件地址(可以省略,使用系统配置中的发件人)
更多的参数,可以查看
流水线语句
–>步骤参考
–>mail:Mail
使用 Email Extension 插件发送邮件通知
系统自带的 mailer
插件提供的功能过于简单。 Email Extension
插件对 mailer
插件进行了扩展,支持更多的特性。如下:
- 可以定制接收人的邮件列表;
- 可以将构建日志以附件的形式加入到邮件中,还可以设置对日志进行压缩;
- 可以发送附件
具体的使用步骤如下:
安装
Email Extension
插件,自行进入 插件管理搜索安装,此处略;安装完
Email Extension
插件后,Jenkins 系统配置中会多出来一项Extended E-mail Notification
配置,如下所示:
按照要求填入相应的配置,如下:
- SMTP server: smtp.163.com
- SMTP Port: 25
- Default user e-mail suffix: @163.com
- Default Content Type: HTML(text/html)
- Default Recipients: 2350686113@qq.com
- Reply To List: 2350686113@qq.com
- Default Subject: $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
- Default Content:
在 Jenkins 中使用 emailext 步骤,因此只要配置 SMTP Server,其他的配置保持默认配置就可以了。
将 emailext 步骤加入 pipeline 的 post 部分,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30pipeline {
agent any
stages {
stage('Deploy QDMWMS Backend Server') {
steps {
sshagent(credentials: ['apps-dev']){
sh '''ssh -o StrictHostKeyChecking=no -l deployer 192.168.64.61 "cd scripts && ./deploy.sh backend qdmwms $VERSION 8100 dev"'''
}
echo "$RELEASE_NOTE"
}
}
}
post {
success {
emailext body:
"""
<p>作业: <b>\'${env.JOB_NAME}:${env.BUILD_NUMBER})\' </b></p>
<p>版本: <b>\'${params.VERSION}\' </b></p>
<p>发版说明: </p>
<p><b>\'${params.RELEASE_NOTE}\' </b></p>
<p>查看日志: "<a href="${env.BUILD_URL}"> ${env.JOB_NAME}:${env.BUILD_NUMBER}/console </a>"</p>
<p><i>(构建构建日志请查看附件.)</i></p>
""",
compressLog: true,
attachLog: true,
subject: "作业 \'${env. JOB_NAME}:${env.BUILD_NUMBER}\' - 状态: ${currentBuild.result?:'SUCCESS'}",
to: '2350686113@qq.com'
}
}
}emailext 步骤常用的参数如下:
- subject: String 类型,邮件主题;
- body: String 类型,邮件内容;
- attachLog: (可选)布尔类型,是否将构建日志以附件形式发送;
- attachmentsPattern: (可选) String 类型,需要发送的附件路径,Ant 风格路径表达式;
- compressLog: (可选) 布尔类型,是否压缩日志;
- from: (可选) String 类型,发件人邮箱;
- to: (可选) String 类型,收件人邮箱;
- recipientProviders: (可选) LIST 类型,收件人列表;
- replyTo: (可选) 回复邮箱;
更多的参数,可以查看
流水线语句
–>步骤参考
–>emailext: Extended Email
收到的邮件内容大概如下: