jenkins Pipeline的declaretive邮箱配置和script 邮箱配置

2019-09-24 2,801 0

jenkins中配置邮箱是非常有帮助的,在每次构建完成之后成功或者失败都可以给指定的项目负责人或者运维人员去发邮件进行通知项目的进行状态。

1,配置邮箱

在这里我是使用的163邮箱,使用之前先去163邮箱中可开启配置;

 记住了,开启配置的时候会让你输入一个密码,这个密码会发到你手机号码上,在jenkins的配置中要使用那个密码,使用163登录密码是不行的。

2,安装jenkins邮箱插件

 可能会弹出来很多自动安装的东西,不要管他,安装完成后直接重启服务。

3,配置系统参数

系统管理->系统设置:

配置“Jenkins Location”和“Extended E-mail Notification”,其中系统管理员邮件地址一定要和“User Name”值一致。

1、Jenkins Location 设置

设置参数:

  • Jenkins URL: Jenkins 地址,用于发送邮件时写入内容之中
  • 系统管理员邮件地址: 邮件服务器账户

2、Extended E-mail Notification 设置

设置参数:

  • SMTP server: smtp 邮箱服务的地址
  • Default user E-mail suffix: 邮件服务器后缀
  • User Name: 邮件服务器账户
  • Password: 邮件服务器 SMTP 授权码
  • Default Content Type: 设置邮件文本格式
  • Enable Debug Mode: 启用 Debug 模式

4,测试script发送邮件

1、创建流水线项目

创建一个流水线项目,用于写 Pipeline 脚本测试邮件发送。

2、配置 Pipeline 脚本

这里写一个简单的 Pipeline 脚本,调用 emailext 方法执行发送邮件。

参考:https://jenkins.io/doc/pipeline/steps/email-ext/

脚本内容:

node () {
    stage('email'){
        echo "测试发送邮件"
        emailext(subject: '任务执行失败',to: '324******47@qq.com',body: '''测试邮件内容...''')
    }
}

 然后就可以看到邮件内容了,这里只做简单的介绍,如何实现这个功能,至于模板或者好看的格式,百度上有很多,或者google 搜索jenkins pipeline send email也能看到很多,接下来介绍pipeline的declaretive方式发邮件,找了好久都没找到对应的,上面的例子调出来了,参考了原博客连接 http://www.mydlq.club/article/7/  

使用declaretive的pipeline发送邮件内容

上面的163配置和系统设置都是一样的,只不过是在创建pipeline的时候换成声明试的就行

202311300826274

 下来贴上我的整个脚本代码,删掉了关键部署的代码,因为每个项目部署的都不一样,所以需要针对需求使用shell再开发脚本,有需要可以留言共同学习研究。把下面这个jenkins代码贴到自己代码中改掉发邮件的地址就可以收到测试邮件了。

pipeline{
        agent any
        stages{
             // Pulling code from github at branch beta
                stage('Pulling code'){
                    steps{
                    script{
                            sh('echo ----------切换beta分支,抓取最新代码到本地目录,测试前端代码是否出发以及部署成功正常-----')
                    }
                  }
                }
            //record a time stamp
                stage('make a str data '){
                        // define a str data
                        steps{
                        script{
                                def dateFormat = new SimpleDateFormat("yyyyMMddHHmm")
                                def date = new Date()
                                riqi=dateFormat.format(date)
                                riqi=riqi+'insight-WebUI-jumpbox.tar.gz'
                                riqi2=riqi+'insight-WebUI-webservice.tar.gz'
                                sh("echo ${riqi} ${riqi2}")
                        }
                      }
                    }
            // scp code file to deploy server
               stage('SCP to deploy sever'){
                      steps{
                      script{
                             sh("echo -----进入指定文件夹,将代码上传到服务器指定目录-----")
                    }
                  }
                }
            // Work for Deploy
                stage('email '){
                   steps{
                    emailext to:'youremail@163/qq.com',
                    subject:"hello email",
                    body:'''<!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>来自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>项目名称 : ${PROJECT_NAME}</li>
                    <li>触发原因 :${CAUSE}</li>
                    <li>构建日志 : <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>单元测试报告 :<a href="${BUILD_URL}testReport/">${BUILD_URL}testReport/</a></li>
                    <li>工作目录 : <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>'''
                    }
                        }
                    }
         }

邮件结果,格式有点乱可能是公司给过滤了一些css规则,但是在我163邮箱中构建日志是很好看的,有需求可以自己把html内容改改就行了:

如果需要设置jenkins部署成功或者失败发送的邮件,可以直接在stages和anget 同级目录中加上以下代码(post部分) 

post{
                success{
                        emailext to:'yourEmail@EMAil.com,第二个邮件用英文逗号隔开',
                        subject:"自动部署WebUI--Beta成功",
                        body:'''<!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>此次项目构建<strong>成功</strong>,大家好,以下为${PROJECT_NAME }项目构建信息</td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">构建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称 : ${PROJECT_NAME}</li>
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                    <li>触发原因: ${CAUSE}</li>
                    <li>构建状态: ${BUILD_STATUS}</li>
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">历史变更记录:</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}
            </td>
        </tr>
    </table>
</body>
</html> '''
                                }
                failure{
                         emailext to:'yourEmail@EMAil.com,第二个邮件用英文逗号隔开',
                         subject:"自动部署WebUI--Beta失败",
                         body:''' <!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>大家好,很不幸,此次项目构建<strong>失败</strong> ,以下为${PROJECT_NAME }项目构建信息</td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">构建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称 : ${PROJECT_NAME}</li>
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                    <li>触发原因: ${CAUSE}</li>
                    <li>构建状态: ${BUILD_STATUS}</li>
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">历史变更记录:</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}
            </td>
        </tr>
    </table>
</body>
</html> '''
                        }
                       }

相关文章

集群压测体系搭建-实时监控平台(2)
密码保护:Metersphere使用实践,优缺点分析
密码保护:MS自动化测试框架调研
记一次Nginx代理Mysql服务的经历
Jenkins中自动化创建Jira任务
集群压测体系搭建-Jmeter集群(1)

发布评论

Index