51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Jenkins配置邮件通知

一、Jenkins 简介

  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。
  Jenkins是一种软件允许持续集成。Jenkins 安装在一台服务上也中央构建发生的地方。

二、Jenkins特性

  • 开源的java语言开发持续集成工具,支持CI,CD;
  • 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
  • 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

三、Jenkins配置邮件通知

完成基于Jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员,如果网站项目很多,人工去查看状态就变得不可取,可以借助Jenkins Email插件实现网站构建完成,自动发送邮件给相应的开发人员、运维人员或者测试人员。Jenkins发送邮件,需安装Email邮件插件,Email-ext、Token-macro和Email-template,Jenkins Email邮件配置常见参数:

SMTP server # 邮件服务器地址;Default

Content Type # 内容展现的格式,一般选择

HTML;

Default Recipients # 默认收件人;

Use SMTP Authentication # 使用SMTP身份验证;

User Name # 邮件发送账户的用户名;

Password # 邮件发送账户的密码;

SMTP port # SMTP服务器端口。

一、安装邮件插件

由于我已经安装了该插件,因此这里显示在已安装目录下,还未安装的童鞋可以通过右上角的搜索框搜索改插件,然后在线安装,安装好之后重启Jenkins。

二、系统管理

Jenkins Email邮件配置方法如下:

1、设置Jenkins邮件发送者,Jenkins平台首页à系统管理à系统设置àJenkins Locationà填写Jenkins URL与系统管理员邮件地址

2、设置发送邮件的SMTP服务器、邮箱后缀,发送类型html、接收者或者抄送者,单击Jenkins平台首页à系统管理à系统设置à Extended E-mail Notification,包括SMTP server、默认后缀、使用SMTP认证、Default Recipients邮件接收人等信息

3、配置邮件内容模版

Default Subject:【构建通知】:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS

附:邮箱内容模版(Default Content):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
	<style> 
		*{font-size: 20px} 
	</style>
</head>

\<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0"\>
\<table class="table" width="1000" border="1" cellspacing="0" cellpadding="5"\>
\<caption align="center"\>\<h3\>项目构建信息\</h3\>\</caption\>
\<thead\>
\<tr\>
\<th\>构建项目-\<b\>${PROJECT_NAME}\</b\>\</th\>
\</tr\>
\</thead\>
\<tbody\>
\<tr\>
\<td\>\<font color="#CC0000"\>\<b\>构建结果 - ${BUILD_STATUS}\</b\>\</font\>\</td\>
\</tr\>
\<tr\>
\<td\>测试数量-${TEST_COUNTS, var="total"}\</td\>
\</tr\>
\</tbody\>
\<tr\>
本邮件由系统自动发出,无需回复!\<br/\>
各位同事,大家好,以下为${PROJECT_NAME}项目构建信息\</br\>
\</tr\>


    &lt;tr&gt;
        &lt;td&gt;&lt;br/&gt;
            &lt;b&gt;&lt;font color="#0B610B"&gt;构建报告&lt;/font&gt;&lt;/b&gt;
            &lt;hr size="2" width="100%" align="center"/&gt;
            &lt;ul&gt;
                &lt;li&gt;构建报告:&lt;a href="${BUILD_URL}allure/"&gt;${PROJECT_URL}allure/&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;br/&gt;
            &lt;b&gt;&lt;font color="#0B610B"&gt;构建信息&lt;/font&gt;&lt;/b&gt;
            &lt;hr size="2" width="100%" align="center"/&gt;
            &lt;ul&gt;
                &lt;li&gt;项目名称: ${PROJECT_NAME}&lt;/li&gt;
                &lt;li&gt;构建编号: 第${BUILD_NUMBER}次构建&lt;/li&gt;
                &lt;li&gt;触发原因:${CAUSE}&lt;/li&gt;
                &lt;li&gt;构建状态:${BUILD_STATUS}&lt;/li&gt;
                &lt;li&gt;构建日志:&lt;a href="${BUILD_URL}console"&gt;${BUILD_URL}console&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;构建 Url: &lt;a href="${BUILD_URL}"&gt;${BUILD_URL}&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;工作目录: &lt;a href="${PROJECT_URL}ws"&gt;${PROJECT_URL}ws&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;项目 Url: &lt;a href="${PROJECT_URL}"&gt;${PROJECT_URL}&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;b&gt;&lt;font color="#0B610B"&gt;构建详细信息&lt;/font&gt;&lt;/b&gt;
            &lt;hr size="2" width="100%" align="center"/&gt;
            &lt;ul&gt;
                &lt;li&gt;BRANCH_NAME: ${BRANCH_NAME}&lt;/li&gt;
                &lt;li&gt;CHANGE_ID: ${CHANGE_ID}&lt;/li&gt;
                &lt;li&gt;CHANGE_URL: ${CHANGE_URL}&lt;/li&gt;
                &lt;li&gt;CHANGE_TITLE: ${CHANGE_TITLE}&lt;/li&gt;
                &lt;li&gt;CHANGE_AUTHOR: ${CHANGE_AUTHOR}&lt;/li&gt;
                &lt;li&gt;CHANGE_AUTHOR_DISPLAY_NAME: ${CHANGE_AUTHOR_DISPLAY_NAME}&lt;/li&gt;
                &lt;li&gt;CHANGE_AUTHOR_EMAIL: ${CHANGE_AUTHOR_EMAIL}&lt;/li&gt;
                &lt;li&gt;CHANGE_TARGET: ${CHANGE_TARGET}&lt;/li&gt;
                &lt;li&gt;BUILD_NUMBER: ${BUILD_NUMBER}&lt;/li&gt;
                &lt;li&gt;BUILD_DISPLAY_NAME: ${BUILD_DISPLAY_NAME}&lt;/li&gt;
                &lt;li&gt;BUILD_ID: ${BUILD_ID}&lt;/li&gt;
                &lt;li&gt;JOB_NAME: ${JOB_NAME}&lt;/li&gt;
                &lt;li&gt;JOB_BASE_NAME: ${JOB_BASE_NAME}&lt;/li&gt;
                &lt;li&gt;BUILD_TAG: ${BUILD_TAG}&lt;/li&gt;
                &lt;li&gt;EXECUTOR_NUMBER: ${EXECUTOR_NUMBER}&lt;/li&gt;
                &lt;li&gt;NODE_NAME: ${NODE_NAME}&lt;/li&gt;
                &lt;li&gt;NODE_LABELS: ${NODE_LABELS}&lt;/li&gt;
                &lt;li&gt;WORKSPACE: ${WORKSPACE}&lt;/li&gt;
                &lt;li&gt;JENKINS_HOME: ${JENKINS_HOME}&lt;/li&gt;
                &lt;li&gt;JENKINS_URL: ${JENKINS_URL}&lt;/li&gt;
                &lt;li&gt;BUILD_URL: ${BUILD_URL}&lt;/li&gt;
                &lt;li&gt;JOB_URL: ${JOB_URL}&lt;/li&gt;
                &lt;li&gt;GIT_COMMIT: ${GIT_COMMIT}&lt;/li&gt;
                &lt;li&gt;GIT_PREVIOUS_COMMIT: ${GIT_PREVIOUS_COMMIT}&lt;/li&gt;
                &lt;li&gt;GIT_PREVIOUS_SUCCESSFUL_COMMIT: ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}&lt;/li&gt;
                &lt;li&gt;GIT_BRANCH: ${GIT_BRANCH}&lt;/li&gt;
                &lt;li&gt;GIT_LOCAL_BRANCH: ${GIT_LOCAL_BRANCH}&lt;/li&gt;
                &lt;li&gt;GIT_URL: ${GIT_URL}&lt;/li&gt;
                &lt;li&gt;GIT_COMMITTER_NAME: ${GIT_COMMITTER_NAME}&lt;/li&gt;
                &lt;li&gt;GIT_AUTHOR_NAME: ${GIT_AUTHOR_NAME}&lt;/li&gt;
                &lt;li&gt;GIT_COMMITTER_EMAIL: ${GIT_COMMITTER_EMAIL}&lt;/li&gt;
                &lt;li&gt;GIT_AUTHOR_EMAIL: ${GIT_AUTHOR_EMAIL}&lt;/li&gt;
                &lt;li&gt;MERCURIAL_REVISION: ${MERCURIAL_REVISION}&lt;/li&gt;
                &lt;li&gt;MERCURIAL_REVISION_SHORT: ${MERCURIAL_REVISION_SHORT}&lt;/li&gt;
                &lt;li&gt;MERCURIAL_REVISION_NUMBER: ${MERCURIAL_REVISION_NUMBER}&lt;/li&gt;
                &lt;li&gt;MERCURIAL_REVISION_BRANCH: ${MERCURIAL_REVISION_BRANCH}&lt;/li&gt;
                &lt;li&gt;MERCURIAL_REPOSITORY_URL: ${MERCURIAL_REPOSITORY_URL}&lt;/li&gt;
                &lt;li&gt;SVN_REVISION: ${SVN_REVISION}&lt;/li&gt;
                &lt;li&gt;SVN_URL: ${SVN_URL}&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;&lt;font color="#0B610B"&gt;失败用例&lt;/font&gt;&lt;/h4&gt;
            ${FAILED_TESTS}&lt;br/&gt;
        &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;&lt;font color="#0B610B"&gt;最近提交(#$GIT_REVISION)&lt;/font&gt;&lt;/h4&gt;
            &lt;!--
            &lt;ul&gt;
                ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="
                &lt;li&gt;%d [%a] %m&lt;/li&gt;
                "}
            &lt;/ul&gt;
            &lt;--&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;b&gt;&lt;font color="#0B610B"&gt;变更信息:&lt;/font&gt;&lt;/b&gt;
            &lt;hr size="2" width="100%" align="center"/&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ul&gt;
                &lt;li&gt;
                    上次构建成功后变化 : ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="&lt;li&gt;%d [%a] %m&lt;/li&gt;"}
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ul&gt;
                &lt;li&gt;上次构建不稳定后变化 : ${CHANGES_SINCE_LAST_UNSTABLE, reverse=true, format="%c", changesFormat="&lt;li&gt;%d [%a] %m&lt;/li&gt;"}
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ul&gt;
                &lt;li&gt;历史变更记录 : &lt;a href="${PROJECT_URL}changes"&gt;${PROJECT_URL}changes&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ul&gt;
                &lt;li&gt;变更集:${JELLY_SCRIPT,template="html"}&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;b&gt;&lt;font color="#0B610B"&gt;构建日志 (最后 200行):&lt;/font&gt;&lt;/b&gt;
            &lt;hr size="2" width="100%" align="center"/&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;textarea cols="120" rows="30" readonly="readonly"
                      style="font-family: Courier New"&gt;${BUILD_LOG, maxLines=200}&lt;/textarea&gt;
        &lt;/td&gt;
    &lt;/tr&gt;




\</table\>
\</body\>
\</html\>

4、设置邮件触发机制

三、项目配置

在完成系统设置后,还需要给需要构建的项目进行邮件配置。

1、进入项目配置界面

进入新建的项目界面,点击配置按钮,进入系统配置页面:

2、配置构建后操作模块

进入系统配置页面后,点击上方的构建后操作选项,配置内容如下:

进入构建后操作的模块,然后会看到下面的内容,具体的配置信息如图中标注:

配置内容默认即可,邮件内容类型可以根据自己的配置选择,收件人列表可以从前面的系统设置中默认收件人选项配置。
四、构建触发邮件测试

如下图,为我收到的测试邮件,邮件内容可以通过系统设置里面进行个性化的配置,可参考我上面的模板,或者自定义即可。

Jenkins配置邮件通知
继续阅读 Jenkins最后更新:2024-1-23

赞(0)
未经允许不得转载:工具盒子 » Jenkins配置邮件通知