Jenkins Email Extension 插件

Email Extension

官网地址:Email Extension

介绍

这个插件通过给您更多的控制来扩展 Mailer 插件的功能。它提供了三个区域的定制:

Triggers(触发器)

选择应导致发送电子邮件通知的条件。

Content(内容)

指定每个触发电子邮件的主题和正文的内容。

Recipients(收件人)

指定触发电子邮件时应该接收电子邮件的人。

问题和议题

在 Jenkins 问题跟踪器中报告错误和增强请求(请不要支持票证)。使用项目 email-ext-plugin 中的组件 JENKINS

入门

系统范围的配置

在项目中使用此插件之前,您必须首先配置一些系统范围的设置。转到 Jenkins 系统范围的配置页面(管理 Jenkins,配置系统)。

这个插件的配置可以在 扩展电子邮件通知 部分找到。此配置应与您的 SMTP 邮件服务器的设置相匹配。此部分反映了电子邮件通知部分中的 Mailer 插件;但是,还有一些补充。标有 默认主题默认内容 的字段允许您在系统范围内配置主题和内容。标记为 Default Recipients 的字段可用于设置使用此插件的所有项目的默认电子邮件地址列表(并且可以在项目级别覆盖);这可用于大大简化您需要为所有项目进行的配置。

项目配置

项目要使用该插件,需要在项目配置页面中启用。在 Post-build Actions 部分,单击 Add post-build action,然后选择 Editable Email Notification

启用此插件后,您可以编辑三个主要字段:

Project Recipient List(项目收件人名单)

这是一个逗号(或空格)分隔的电子邮件收件人列表。允许您为发送的每封电子邮件指定一个收件人列表。

Default Subject(默认主题)

这允许您配置一个令牌(稍后将详细介绍令牌),该令牌可用于轻松配置项目的所有电子邮件主题。

Default Content(默认内容)

Default Subject 相同,但用于电子邮件正文而不是主题。

流水线步骤

可以通过以下步骤从 Pipeline 使用此插件:emailext

emailext body: 'Test Message',
    subject: 'Test Subject',
    to: 'test@example.com'

使用 recipientProviders 参数添加其他收件人。例如:要添加导致变更集中发生变更的所有人员以及发起构建的用户:

emailext body: 'Test Message',
    recipientProviders: [developers(), requestor()],
    subject: 'Test Subject',
    to: 'test@example.com'

此插件的收件人提供程序也可以与 Mailer 插件一起使用。例如:添加罪魁祸首和发起构建的用户:

step([$class: 'Mailer',
    notifyEveryUnstableBuild: true,
    recipients: emailextrecipients([culprits(), requestor()])])

用法

要查看此插件的高级配置,请单击高级按钮。此部分允许您为每种类型的电子邮件触发器指定收件人以及可用于在发送之前修改电子邮件的预发送脚本。

预发送脚本和后发送脚本

此功能允许您编写 MimeMessage 可以在发送电子邮件之前或之后修改对象的脚本。这允许添加自定义标题、修改正文等。预定义的变量包括:

msg( jakarta.mail.internet.MimeMessage)

MIME 电子邮件消息对象,可以修改。

logger( java.io.PrintStream)

可用于将消息记录到构建日志的 PrintStream

build( hudson.model.AbstractBuild)

此消息所属的构建(仅用于 Freestyle 项目)。

run( hudson.model.Run)

此消息所属的构建(可与 Freestyle 项目或 Pipeline 一起使用)。

cancel(布尔值)

当设置为 true 时,取消电子邮件的发送。

触发器

默认情况下,唯一配置的触发器是 Failure - Any 触发器。要添加更多触发器,请从下拉列表中选择一个,它将被添加到列表中。要查看此插件发送电子邮件必须满足哪些条件,请单击 (问号)旁边的触发器。

扩展电子邮件发布者触发器

以下触发器可作为 Extended Email Publisher 插件的一部分使用,其他插件也可以通过 Extended Email Publisher 中定义的扩展点提供触发器:

Aborted(中止)

如果构建状态为 “Aborted”,将发送一封电子邮件。构建通过 UI 或 API 中止,但通常需要某种用户干预才能发生。中止的构建在其执行期间停止。

Always(总是)

无论构建状态如何,始终在构建后触发电子邮件。

Before Build(构建之前)

构建开始时将发送一封电子邮件,但在 SCM 轮询完成之后。

Failure → Unstable (Test Failures)(失败→不稳定(测试失败))

每当构建从失败(编译或构建步骤失败)变为不稳定(单元测试失败)时,都会发送一封电子邮件。这基本上意味着所有的构建步骤都成功了,但仍然有测试失败。

Failure - Any(失败 - 任何)

任何时候构建失败都会发送一封电子邮件。如果配置了 “Failure - Still” 触发器,并且之前的构建状态为 “Failure”,则 “Failure - Still” 触发器将改为发送电子邮件。

Failure - 1st(失败 - 第一次)

当构建状态从 “Success” 变为 “Failure” 时,将发送一封电子邮件。

Failure - 2nd(失败 - 第二次)

构建成功后,如果连续两次构建失败,将发送一封电子邮件。

Failure - Still(失败 - 仍然)

如果连续两个或多个构建的构建状态为 “Failure”,则会发送一封电子邮件。

Failure - X(失败 - X)

构建成功后连续 X 次构建失败时会发送一封电子邮件

Fixed(固定的)

当构建状态从 “Failure” 或 “Unstable” 变为 “Success” 时,将发送一封电子邮件。

Not Built(未建)

如果构建状态为 “Not Built”,将发送一封电子邮件。此状态代码用于多阶段构建(如:maven2),其中早期阶段的问题阻止了后期阶段的构建。

Script - After Build(脚本 - 构建后)

允许用户定义一个脚本,该脚本被执行以确定是否应该在构建发生后发送电子邮件。脚本的最后一行应解析为 true 以发送电子邮件,或 false 以不发送电子邮件。有关脚本可用的参数,请参阅下面的脚本触发器选项。

Script - Before Build(脚本 - 构建之前)

允许用户定义一个脚本,该脚本被执行以确定是否应该在构建发生之前发送电子邮件。脚本的最后一行应解析为 true 以发送电子邮件,或 false 以不发送电子邮件。有关脚本可用的参数,请参阅下面的脚本触发器选项。

Status Changed(状态已更改)

如果构建状态发生变化,将发送一封电子邮件。

Success(成功)

如果构建状态为 “Success”,将发送一封电子邮件。如果配置了 “Fixed” 触发器,并且之前的构建状态为 “Failure” 或 “Unstable”,则 “Fixed” 触发器将改为发送电子邮件。

Test Improvement(测试改进)

只要有改进,就会发送一封电子邮件。只要测试失败的次数少于之前的版本,就认为该版本已改进。如果当前失败计数变为 0(不再有测试失败),此触发器将不会发送电子邮件。

Test Regression(测试回归)

只要有回归,就会发送一封电子邮件。每当一个构建的失败比之前的构建多,或者有新的测试失败时,它就会被认为是倒退。

Unstable (Test Failures)(不稳定(测试失败))

每当构建不稳定时,都会发送一封电子邮件。如果测试失败,则构建不稳定,但所有构建步骤均已成功完成。如果配置了 “Unstable - Still” 触发器,并且之前的构建状态为 “Unstable”,则 “Unstable - Still” 触发器将改为发送电子邮件。

Unstable (Test Failures) - 1st(不稳定(测试失败) - 第一)

当构建状态从任何更改为 “Unstable” 时,将发送一封电子邮件。

Unstable (Test Failures) - Still(不稳定(测试失败) - 仍然)

如果连续两个或多个构建的构建状态为 “Unstable”,则会发送一封电子邮件。如果测试失败,则构建不稳定,但所有构建步骤均已成功完成。

Unstable (Test Failures)/Failure → Success(不稳定(测试失败)/失败→成功)

当构建状态从 “Failure” 或 “Unstable” 变为 “Success” 时,将发送一封电子邮件。中间的 “Aborted” 构建被忽略。

常用触发选项

添加触发器后,您有几个常用选项(可能还有其他选项可用,具体取决于触发器实现):

Recipient List(收件人名单)

如果您希望将电子邮件发送到上面配置的项目收件人列表,请添加此收件人提供商。

Developers(开发者)

添加此收件人提供商以将电子邮件发送给签入上次构建代码的任何人。此插件将根据提交者的 ID 和配置系统页面的扩展电子邮件通知部分附加的默认用户电子邮件后缀生成一个电子邮件地址。例如:如果某个 ID 为 first.last 的人提交了更改,并且默认用户电子邮件后缀是 @example.com,那么将向 first.last@example.com 发送一封电子邮件。

Requestor(请求者)

添加此收件人提供程序以向启动构建的用户发送电子邮件(如果由用户手动启动)。

Include Culprits(包括罪魁祸首)

如果添加了此收件人提供者和 Developers 收件人提供者,电子邮件将包括自上次成功构建以来提交的每个人。

Previous(以前的)

添加此收件人提供商以向先前构建的罪魁祸首、请求者和开发人员发送电子邮件。

Advanced(先进的)

在每个触发器级别配置属性

Recipient List(收件人名单)

一个逗号(或空格)分隔的电子邮件地址列表,如果它被触发,则应接收此电子邮件。此列表附加到上述项目接收者列表中。

Subject(主题)

指定所选电子邮件的主题行。

Content(内容)

指定所选电子邮件的正文。

脚本触发器选项

您还可以将 Script - After BuildScript - Before Build 触发器添加到项目中,以使用 Groovy 脚本在构建之前或之后定义是否发送电子邮件。该脚本在触发器的 Groovy Script 部分中定义。模型中添加了四个对象,脚本用于与构建进行交互:

out( java.io.PrintStream)

可用于将消息记录到构建日志的 PrintStream

build( hudson.model.AbstractBuild)

这是当前的构建,通常是 AbstractBuild

project( hudson.model.AbstractProject)

当前构建开始的项目对象,通常是 AbstractProject

rooturl( String)

Jenkins 实例根 URL,对链接很有用。

脚本中的最后一行应解析为布尔值(truefalse):

脚本 - 构建之前:

// this could be used to notify people that a new build is happening
build.previousBuild.result.toString().equals('FAILURE')

脚本 - 构建后:

// only send am email if the build failed and 'mickeymouse' had a commit
build.result.toString().equals('FAILURE') && build.hasParticipant(User.get('mickeymouse'))

// only send an email if the word {{ERROR}} is found in build logs
build.logFile.text.readLines().any { it =~ /.*ERROR.*/ }

Tokens

该插件使用令牌允许将动态数据插入收件人列表、主题行或正文中。标记是一个以 < / k b d > (美元符号)开头并以空格结尾的字符串。触发电子邮件时,主题或内容字段中的标记将被它所代表的实际值动态替换。此外,令牌的值可以包含其他令牌,这些令牌本身将被实际内容替换。例如:该 ‘ </kbd>(美元符号)开头并以空格结尾的字符串。触发电子邮件时,主题或内容字段中的标记将被它所代表的实际值动态替换。此外,令牌的值可以包含其他令牌,这些令牌本身将被实际内容替换。例如:该 ` </kbd>(美元符号)开头并以空格结尾的字符串。触发电子邮件时,主题或内容字段中的标记将被它所代表的实际值动态替换。此外,令牌的值可以包含其他令牌,这些令牌本身将被实际内容替换。例如:该DEFAULT_SUBJECT标记被 “配置系统” 页面的 “扩展电子邮件通知” 部分的 “默认主题” 字段中的文本(和其他标记)替换。同样,令牌将被替换为$PROJECT_DEFAULT_SUBJECT` 项目配置页面中的默认主题字段。

当您为项目启用电子邮件内容字段时,该插件将其设置为默认值。项目配置页面上的默认主题和默认内容字段分别默认为 $DEFAULT_SUBJECT$DEFAULT_CONTENT,从配置系统页面的扩展电子邮件通知部分委托给系统范围的配置。类似地,每个触发器内容字段默认为 $PROJECT_DEFAULT_SUBJECT$PROJECT_DEFAULT_CONTENT,委托给项目的配置。由于令牌的值可以包含其他令牌,因此这提供了不同的配置点,允许您在最广泛的级别(所有项目)、最狭窄的级别(单个电子邮件)和中间级别(单个项目)快速进行更改。

要查看所有可用电子邮件令牌的列表及其显示的内容,请单击 (问号)与项目配置页面的可编辑电子邮件通知部分中的内容令牌参考相关联。

从 2.22 版本开始,该插件还支持 Token Macro 插件提供的令牌。当您单击 (问号)时,您可以在扩展电子邮件发布者特定令牌下方看到可用的令牌宏插件令牌。与项目配置页面的可编辑电子邮件通知部分中的内容令牌参考相关联。

Jelly 脚本内容模板

2.9 版的新功能是可以使用 Jelly 脚本。Jelly 脚本的强大之处在于您可以连接到 Jenkins API 以获取您想要或需要的任何信息。这个插件打包了两个 Jelly 脚本,也可以自己写。

有两个开箱即用的默认 Jelly 脚本;一种是为 HTML 电子邮件设计的,另一种是为文本电子邮件设计的。您可以使用 template 参数指定您想要的脚本。每种脚本的用法如下:

Text-only Jelly script

${JELLY_SCRIPT,template="text"}

HTML Jelly script

${JELLY_SCRIPT,template="html"}

您还可以编写自己的 Jelly 脚本。Jelly 脚本特别强大,因为它们提供了 Jenkins API 的挂钩,包括 hudson.model.AbstractBuildhudson.model.AbstractProject。有关如何执行此操作的示例,请查看现有 htmltext 脚本。

使用自定义 Jelly 脚本(未与此插件打包的脚本)需要您的 Jenkins 管理员的合作。步骤比较简单:

  1. 创建 Jelly 脚本模板。脚本的名称应该是 <name>.jelly

名称以 .jelly 结尾很重要。

  1. 让您的 Jenkins 管理员将脚本放入 ${JENKINS_HOME}/email-templates/

  2. 使用 $JELLY_SCRIPT 令牌,template 参数等于脚本文件名,不带 .jelly 扩展名。例如:如果脚本文件名为 foobar.jelly,电子邮件内容将是 ${JELLY_SCRIPT,template="foobar"}

您可以通过查询构建操作来获取其他插件操作的对象,例如:${it.getAction('hudson.plugins.fitnesse.FitnesseResultsAction')}。然后您需要知道这个动作对象允许哪些功能,并遍历结果。

Groovy 脚本内容模板

2.15 版的新功能是使用 Groovy 脚本的能力。脚本的强大之处在于您可以连接到 Jenkins API 以获取您想要或需要的任何信息。这个插件有两个脚本和对应的模板打包,也可以自己写。

有两个开箱即用的默认脚本和模板;一种是为 HTML 电子邮件设计的,另一种是为文本电子邮件设计的。您可以使用 script 参数指定您想要的脚本;您还可以保留默认脚本并使用 template 参数指定不同的模板文件。此外,您还可以包含一个使用该 init 参数进行一些初始化的脚本。每种脚本的用法如下:

Text-only Groovy script

${SCRIPT, template="groovy-text.template"}

HTML Groovy script

${SCRIPT, template="groovy-html.template"}

您还可以编写自己的脚本和模板。这些脚本特别强大,因为它们提供了 Jenkins API 的挂钩,包括 hudson.model.AbstractBuildhudson.model.AbstractProject。有关如何执行此操作的示例,请查看现有 htmltext 脚本。

使用自定义脚本(未与此插件打包的脚本)需要您的 Jenkins 管理员的合作。步骤比较简单:

  1. 创建 Groovy 脚本模板。脚本名称以语言的标准扩展名结尾(即 .groovy)。模板可以命名为任何名称。

  2. 让您的 Jenkins 管理员将脚本放入 ${JENKINS_HOME}/email-templates/

  3. 使用 $SCRIPT 模板参数等于您的模板文件名的令牌,或者另外使用等于自定义脚本名称的脚本参数。例如:如果模板文件名为 foobar.template,则电子邮件内容将为 ${SCRIPT, template="foobar.template"}

请参阅以下示例以使用内置 Groovy 模板执行各种操作:

附件

2.15 版的新增功能是能够使用 Jenkins 中许多地方使用的 Ant 模式匹配语法添加附件。您可以在 配置系统 页面的 扩展电子邮件通知 部分设置最大总附件大小;否则,它将是无限的。

Jive 格式化程序

jive-formatter.groovy 包含用于轻松方便地格式化从 Jenkins 发送到 Jive 的电子邮件的方法。它应该从 Pre-send Script 区域调用。

Jive 似乎不支持多种格式的文本,因此每个文本块只调用一种格式化方法。

在调用颜色或大小等格式化方法之前,将在发送到 Jive 系统的每一行文本上调用 formatLineformatText 可以并且应该调用。请在您自己的 Jive 实例上进行测试,并在发现时添加功能!

在尝试调用任何函数之前,应将以下行添加到 Pre-send Script 区域:

File sourceFile = new File("/your/preferred/path/jive-formatter.groovy");
Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(sourceFile);
GroovyObject jiveFormatter = (GroovyObject) groovyClass.newInstance();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SMTP中继(SMTP Relay)是一种通过中间服务器来传递电子邮件的方式。SMTP是Simple Mail Transfer Protocol的缩写,是一种用于在计算机网络上发送电子邮件的标准协议。SMTP中继则是指在传递电子邮件过程中,通过一个中继服务器来转发邮件。 SMTP中继的作用主要有两个方面。首先,它可以帮助解决直接发送邮件的问题。直接发送邮件存在一些限制,如有些网络运营商或系统管理员为了控制垃圾邮件的滥发,禁止用户使用自己的SMTP服务器发送邮件。而使用SMTP中继可以绕过这些限制,将邮件通过中继服务器发送出去。 另外,SMTP中继还可以提高邮件的可靠性和可用性。因为通过中继服务器发送邮件,如果发送邮件的源服务器出现故障,可以通过切换到备用中继服务器来继续发送邮件,避免邮件发送中断。同时,使用SMTP中继还可以通过负载均衡和故障转移来提高邮件传递的效率和可靠性。 SMTP中继的工作原理是当发件人发送一封电子邮件时,邮件将被发送到中继服务器,然后中继服务器将邮件转发给接收方的邮件服务器。中继服务器充当了一个中间人的角色,起到了桥梁的作用,将发件人和收件人之间的邮件进行传递。 总而言之,SMTP中继是一种通过中间服务器来传递电子邮件的方式。它解决了直接发送邮件的限制,并提高了邮件的可靠性和可用性。通过中继服务器的转发和传递,确保了电子邮件的正常发送和接收。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值