jenkins配置邮件及加强版邮件通知

环境
jenkins:2.5 
操做系统:win7 
服务器:centos6 
工具:CRThtml

需求
这个月有那么一次jenkins在自动升级(SCM)时失败了,那时恰好晚上7点,直到次日早上有人点击时,才意识到升级失败,因此想一想,我仍是配置下构建失败的邮件通知吧!java

安装插件
Email Extension Plugincentos

(安装插件,我喜欢先去下载hpi文件,而后再去手动安装)服务器

jenkins默认的邮件通知
我先讲解下,默认的。 
jenkins默认就有一个邮件通知,只是太简单的,不能个性化或者说定制化。app

设置系统管理员邮件地址运维


邮件通知工具


①SMTP服务器:若是你使用的是公司邮箱,那么就询问你本身公司里的运维人员吧;他们通常都知道,至少我就是问公司里的运维人员;要是你打算使用QQ邮箱,那么你须要设置下,网上有教程;网易邮箱默认开启。 
说明:SMTP是一种协议 
②用户默认邮件后缀:根据本身状况去设置 
③勾选使用SMTP认证,用户名:根据本身状况设置,密码也是。 
④SMTP端口:默认25单元测试

配置好了后,能够勾选 测试,在Test e-mail recipient输入本身的邮箱,看下可否成功。测试

成功后,咱们能够到job中进行配置: ui


配置好了后,接下来测试,我下面是故意写错echo,使其构建失败,验证邮件。

发送邮件的结果: 


能够看出这个邮件内容纯文本,连个超连接都没有,内容也不够丰富!

接下来咱们使用加强版的邮件通知
系统配置
在安装好插件后,你的系统设置里面会有这么一个设置:

接上面图片: 


上面点击高级按钮后: 


①SMTP server:和以前同理 
②Default user E-mail suffix:根据本身状况填写 
③勾选Use SMTP Authentication,用户名和密码填写本身的 
④SMTP port:默认25 
⑤Default Content Type:邮件文档类型 
⑥Default Recipients:默认接收人列表,已逗号进行分割

其余我都使用默认或者说没有填写,点击保存。

注意: 
上面配置中,凡是以Default开头的名称,均可以在job的配置中当作变量使用。好比:默认的收件人地址:在单独的job中能够这样使用$DEFAULT_RECIPIENTS。

单个job的单独配置
在增长构建后操做步骤,添加加强版邮件通知(看红色圈住的部分): 


以后你会获得:


稍微讲解下: 
①Disable Extended Email Publisher:勾选后,邮件就不发送,看本身的状况喽,若是你想调试某些东西,又不想发邮件出去就能够勾选这个。 
②Project Recipient List:收件人地址;多个收件人邮件地址用逗号进行分割;想使用全局默认配置的话,可使用$DEFAULT_RECIPIENTS。 
③Project Reply-To List:容许回复人的地址;想使用系统设置中的默认值的话,可使用$DEFAULT_REPLYTO; 
④Content Type:邮件文档的类型,能够设置HTML等格式; 
⑤Default Subject:默认主题,也就是邮件标题;同理可使用$DEFAULT_SUBJECT 
⑥Default Content:默认邮件内容;这里是关键;我这里使用的是模板${SCRIPT, template="groovy-html.template"};后面会讲;固然不想使用模板的话,能够经过使用jenkins自身提供的变量来本身定义; 
⑦Attach Build Log:发送的邮件是否包含日志; 
下面几个默认就好,最后一个Triggers很是关键; 
假设最后一个不改的话,邮件是接收不到的,这个是官方留下的一个大坑,必定要本身再添加一个Recipient List。

点击保存,点击构建后,收到的邮件格式以下: 


遇到的问题
问题一
An attempt to send an e-mail to empty list of recipients, ignored.
1
这个问题,我一直卡着好久,差很少1天吧!始终不知道为何收不到邮件

直到Google到这个地方: 
https://stackoverflow.com/a/37167955/6952713

https://issues.jenkins-ci.org/browse/JENKINS-34731?focusedCommentId=257221&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-257221 
才知道,官方给了一个大坑。

问题二
Exception raised during template rendering: No signature of method: hudson.model.FreeStyleBuild.getExactRuns() is applicable for argument types: () values: [] Possible solutions: getActions(), getActions(java.lang.Class) groovy.lang.MissingMethodException: No signature of method: hudson.model.FreeStyleBuild.getExactRuns() is applicable for argument types: () values: [] Possible solutions: getActions(), getActions(java.lang.Class) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58) at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:49) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at SimpleTemplateScript3.run(SimpleTemplateScript3.groovy:106) at groovy.text.SimpleTemplateEngine$SimpleTemplate$1.writeTo(SimpleTemplateEngine.java:168) at groovy.text.SimpleTemplateEngine$SimpleTemplate$1.toString(SimpleTemplateEngine.java:180) at hudson.plugins.emailext.plugins.content.ScriptContent.renderTemplate(ScriptContent.java:127) at hudson.plugins.emailext.plugins.content.ScriptContent.evaluate(ScriptContent.java:68) at hudson.plugins.emailext.plugins.content.AbstractEvalContent.evaluate(AbstractEvalContent.java:64) at org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro.evaluate(DataBoundTokenMacro.java:199) at 
1
这个错误是我在使用邮件模板时,报的错! 
个人步骤以下: 
我在参考官方 :https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin 
中的Script content这一章节内容时,下载了两个Template Examples 
jenkins-matrix-email-html.template 
jenkins-generic-matrix-email-html.template

按照官方教程在jenkins home(/home/jenkins/dataspace)目录中建立了email-templates文件夹,并把那两个模板上传上去了,以后在job配置中的Default Content中写入:

${SCRIPT, template="jenkins-matrix-email-html.template"}
1
而后构建时,就报错! 
这一块也困扰我好久!直到Google到了这么一段话(网上资料真心少);

http://jenkins-ci.361315.n4.nabble.com/Email-Template-Testing-Exception-td4807117.html

内容以下:

Looks like you are trying to test a matrix template with a non matrix job.

意思是说:

看起来像你在一个非matrix job中测试一个matrix模板

以后又去查询什么是matrix job; 
这是一篇关于matrix的官方教程 
Building a matrix project

看到里面内容倒是构建一个Multi-Configuration Projects;这时就有点迷糊了!接着查看Matrix Project Plugin这个插件;里面的讲解有这么一句话:

Multi-configuration (matrix) project type.

基本能够确定matrix job就是Multi-configuration project(构建一个多配置项目)。也就是说我要使用jenkins-matrix-email-html.template这个模板就必须建立与之对应的job;

通过测试后,果真能够,配置都是相似的:邮件结果以下: 


那么matrix job这个用的场景多吗? 
这是官方给出的经验:

Experience with Hudson - Building matrix project

其讲解到:

好比 你的项目想在jdk 1.4 、1.五、1.6中进行测试,你就能够经过建立这种类型的job;

使用自定义模板
经过上面遇到的问题,咱们有时会想本身来定义模板! 
使用本身的模板有两种方法:

方法一 不使用模板
在Default Content这一栏中,本身经过Token来写: 
(这里的token不要翻译成令牌,由于不知道翻译成啥,就保留原文token吧)

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

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
    <table width="95%" cellpadding="0" cellspacing="0"
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
        <tr>
            <td>
                <h2>
                    <font>来自Mr.Jenkins的邮件通知</font>
                </h2>
            </td>
        </tr>
        <tr>
            <td>
                <br />
                <b><font color="#0B610B">构建信息</font></b>
               <hr size="2" width="100%" align="center" />
             </td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
                    <li>触发缘由&nbsp;:${CAUSE}</li>
                    <li>构建日志&nbsp;:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>单元测试报告&nbsp;:<a href="${BUILD_URL}testReport/">${BUILD_URL}testReport/</a></li>
                    <li>工做目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>

                </ul>             </td>         </tr>                 <tr>             <td><b><font color="#0B610B">构建日志:</font></b>             <hr size="2" width="100%" align="center" /></td>         </tr>         <tr>             <td><textarea cols="80" rows="30" readonly="readonly"                     style="font-family: Courier New">${BUILD_LOG}</textarea>             </td>         </tr>     </table> </body> </html>

相关文章
相关标签/搜索