目录

Jenkins 内置了 Mailer 插件用于发送邮件通知,但是 Mailer 插件的功能比较简单,无法按照用户的需求进行邮件的定制。Email Extension 是 Jenkins 默认推荐安装的一款功能强大的邮件插件,使用它几乎可以定制邮件的任何部分。本文将结合笔者的使用经验介绍 Email Extension 插件的使用方法。

全局配置

和其它的插件一样,Email Extension 插件的全局配置也是在 Jenkins -> Manage Jenkins -> Configure System 中。具体的配置项非常多,下面介绍几个比较基本且重要的配置项。

SMTP server
设置 smtp server 的名称或 IP 地址。

邮件类型
可以选择 HTML 格式的邮件或者是纯文本格式的邮件:

默认标题
默认的标题为:

$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!

显示项目名称,Build 号和 Build 结果。如果没有其它的要求,这个标题也算是简单明了啊!

默认的邮件内容
默认的邮件内容为:

$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:

Check console output at $BUILD_URL to view the results.

一般我们会通过邮件模板等功能实现一个完整的邮件内容,所以可以忽略这个默认的内容。

默认的触发条件
作为一种通知方式,在什么条件下触发邮件通知是极为重要的。Email Extension 插件支持的触发器类型是很丰富的:

个人觉得这里的默认设置没那么重要,因为每个项目的情况都是不一样的,所以最终都需要在项目上进行设置。而项目上的设置会覆盖这里的默认设置。

为项目添加邮件通知

在项目的配置项中添加 Post-build Actions,选择 "Editable Email Notification":

然后就可以进行详细的设置了:

下面介绍一下比较重要的配置项。

关闭邮件通知

这个选项在维护项目时非常有用,可以临时关闭邮件通知,避免把不必要的邮件发送给用户。

收件人列表
收件人邮件地址,多于一个时需要使用逗号分隔。

邮件类型
和全局设置中的邮件类型一样,没有特殊要求的话保留默认类型即可。此时会应用全局设置中的类型。

默认标题
标题的默认内容为:$DEFAULT_SUBJECT,也就是在全局配置中设置的内容。如果觉着不爽可以进行深度定制,也就是使用系统提供的变量进行拼凑。至于能拿到什么变量,可以参考 Conten Token Reference 的内容:

点击问号图标就会列出所有可用的变量,实在是太多了,就不贴出来占篇幅了!

默认内容
默认内容为:$DEFAULT_CONTENT,也是在全局配置中设置的内容。和默认标题一样,你也可以自行定义。但多数情况下都会使用后面介绍的邮件模板,这里就不啰嗦了。

附件
有时把一些 Build 产物作为通知邮件的附件是很有用的。这里我们也可以轻松实现:

我们可以指定文件的名称,也可以使用通配符。
除了 Build 的产物,Build 的日志也是极其重要的信息。它可以帮助我们快速的调查 Build 过程中的各种问题,所以也应该把 Build 日志添加为邮件的附件:

测试一下,收到的邮件带了两个附件:

邮件模板

邮件的内容可以包含大量的信息,如果每个项目中都自己组织这些信息会费时费力。使用邮件的模板功能可以极大的提高生产力!
Email Extension 插件支持两种类型的邮件模板,分别是 Jelly 模板和 Groovy 模板。当前的现状是 Groovy 模板正在逐步的取代 Jelly 模板。但是两种模板的设置和使用方式基本一样,我们以 Groovy 模板为例进行介绍。
在 Email Extension 插件的官方文档中可以找到模板的下载地址。笔者以下载的 groovy-html.template 文件为例进行说明。首先是安装邮件模板,其实就是把模板文件复制到 Jenkins 安装目录下的 email-templates 目录中,如果该目录不存在就先创建它。
接着我们可以测试一下安装的模板是否能正常工作。打开一个添加了 "Editable Email Notification" 的项目,你会发现在左边的菜单中多了一项 "Email Template Testing":

选择这个菜单项并且输入刚才安装的模板名称:

点击 "Go" 按钮,一个预览的邮件内容就会出现在下面的空白处。
最后我们需要在邮件通知的配置中应用这个模板。其实就是设置 Default Content 为:
${SCRIPT, template="groovy-html.template"}
好了,邮件的模板设置已经完成,赶快触发个 Build 看看结果吧!

Pipeline 支持

Email Extension 插件支持 pipeline, 下面的代码可以很好的工作:

stage('test') {
steps {
echo 'hello'
// error 'build failed'
}
post {
success {
emailext (
subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
to: "nick@xxxxx.com",
body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at &QUOT;<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</p>""",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
}
failure {
emailext (
subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
to: "nick@xxxxx.com",
body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at &QUOT;<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</p>""",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
}
}
}

上面的代码在 stage 执行成功或者失败的情况下发送邮件。但邮件的内容只是简单的纯文本或这是 HTML 格式的文本。笔者尝试在 pipeline 代码中使用邮件模板的功能,但不管是 Jelly 模板还是 Groovy 模板都不能正常工作,所以这里还有待完善的功能。

总结

Email Extension 是一款可定制性强、功能全面的 Jenkins 邮件通知插件。随着 pipeline 日渐成为主流的持续集成方式,希望能 Email Extension 也能紧跟趋势提供对 pipeline 更好的支持。

Jenkins : 邮件通知的更多相关文章

  1. Jenkins邮件通知

    Jenkins邮件通知 Jenkins 配备了一个开箱工具,添加一个电子邮件通知的构建项目. 第1步 - 配置SMTP服务器. 转到 Manage Jenkins → Configure System ...

  2. jenkins邮件通知功能

    第部分:全局设置 第一步:进入jenkins的系统设置 第二步:设置管理员邮件地址: 第三步:下载email-ext插件并填写对应的内容: 第四部:填写邮件通知 第五步:以上就是系统管理里需要填写的全 ...

  3. Jenkins系列-Jenkins邮件通知

    一.安装邮件插件 由于Jenkins自带的邮件功能比较鸡肋,因此这里推荐安装专门的邮件插件,不过下面也会顺带介绍如何配置Jenkins自带的邮件功能作用. 可以通过系统管理→管理插件→可选插件,选择E ...

  4. pytest测试框架+jenkins结合pytest+jenkins邮件通知配置

    刚刚做完一个项目,由于这是一个方案项目,而不是产品,所以各种准备很不充分,很多公司的能力不能复用,整个团队又都是新员工,而且有部分实习生,匆忙上马,今天对我的自动化框架做一个回溯 自动化测试框架的选择 ...

  5. [原]Jenkins(十九) jenkins再出发之jenkins邮件通知

    1.下载插件: 2.配置插件: 3.邮件插件配置 4.设置触发器:

  6. jenkins邮件通知html魔板

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Jenkins 配置邮件通知

    jenkins 是一个开源的自动化服务器.通过Jenkins,可以通过自动化加速软件开发过程.Jenkins管理和控制各种开发的生命周期过程,包括构建,文档,测试,包,阶段,部署,静态分析等等.您可以 ...

  8. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  9. Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知

    1 简述 众所周知,Jenkins默认提供了一个邮件通知,能在构建失败.构建不稳定等状态后发送邮件.但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容.无法定义发送邮件的格式.无法定义灵活 ...

随机推荐

  1. 【亲测】Appium测试Android混合应用时,第二次切换到WebView失败

    要解决的问题:Appium测试Android混合应用时,第二次切换到WebView时失败 原因分析:在用Appium测试Android混合应用时,当程序第一次切换到WebView时,可以正常进行自动化 ...

  2. [基础架构]PeopleSoft都有哪些进程运行在进程服务器上

    PSPRCSRV:(PSPRCSRV.EXE) 该进程负责启动所有服务进程. 每隔15s,该进程就会去看进程调度器中是否有需要运行的进程请求.如果没有需要运行的则sleep15s,然后再次检查. 如果 ...

  3. Js中的数据属性和访问器属性

    Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...

  4. 深入理解 JavaScript(一)

    编写高质量 JavaScript 代码的基本要点 转载:http://wiki.jikexueyuan.com/project/javascript-depth-understanding/start ...

  5. RabbitMQ知多少

    1.引言 RabbitMQ--Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议 ...

  6. hihocoder_1014: Trie树(Trie树模板题)

    题目链接 #include<bits/stdc++.h> using namespace std; ; struct T { int num; T* next[]; T() { num=; ...

  7. Java并发编程(2):线程中断(含代码)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  8. linux下 git 安装

    1.使用yum安装 yum -y install git yum remove git 2.源代码安装 a.下载git源码  网址为 https://github.com/git/git/releas ...

  9. Spring事件解析

    首先介绍Spring事件相关类的关系: 其中EventListener与EventObject均是Java SE的范畴,源码如下: package java.util; public interfac ...

  10. JSON的详细介绍

    JSON的语法可以表示以下三种类型的值: 简单值:可以表示字符串,数值,布尔值,null,但不支持undefined. 对象(Object):对象作为一种复杂数据类型,表示的是一组无序的键值对儿. 数 ...