zoukankan      html  css  js  c++  java
  • Jenkins实现只发送执行失败的邮件

    需求:接口巡检发生错误的情况下才发送预警邮件

    思路:通过查找生成的html报告文件内容是否有100.00%,如果存在表示执行都成功,那就不发送邮件;否则发送邮件。

        Jmeter的脚本里的接口不管如何的报错,是都不会引起Jenkins构建错误的。也就是说项目构建除了特殊因素之外会一直构建成功,那么也就达不到我们想要的只在接口巡检发生错误的情况下才发送预警邮件的需求。

            这个时候我们就要借助一些外在的因素,人为的让Jenkins在构建项目后,出现构建失败的情况。

    接口-ant-test1 构建项目-设置内容

    cd /var/lib/jenkins/workspace/ant-test1
    rm -rf *.html
    rm -rf *.png
    cd /var/lib/jenkins/workspace/jmeter
    rm -rf *.html
    rm -rf *.png
    cd /usr/local/jmeter/apache-jmeter-5.2.1/extras/report
    cp -r * /var/lib/jenkins/workspace/ant-test1
    cp -r * /var/lib/jenkins/workspace/jmeter
    rm -rf *

     构建后email操作:

    <!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>
                本邮件由系统自动发出,无需回复!<br/>
                各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
                <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></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>触发原因: 我爱卡api线上监控</li>
                        <li>构建状态: ${BUILD_STATUS}</li>
                        <li>测试报告: <a href="${PROJECT_URL}HTML_20Report/">${PROJECT_URL}HTML_20Report/</a></li>
                        <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                    </ul>
    
    
                    
    <ul>
    ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
    </ul>
                    
                </td>
            </tr>
        </table>
    </body>
    </html>
    

      

    一、开始实现--新建jmeter项目

         重新建立一个新的自由风格的项目,该项目的构建触发器选择为依赖其他项目构建完成后才开始构建。

     

    #!/bin/bash
    # author: zjj
    # date: 20210309
    cd /var/lib/jenkins/workspace/ant-test1/
    grep -n "Failure Message" ApiTest*.html
    if [ $? -eq 1 ];then
    exit 1
    else
    echo "找到了"
    fi
    

      

    shell 解读

    $?  上一条命令执行成功 返回值 为0

          上一条命令执行失败 返回值 为1

     搞定!!

  • 相关阅读:
    graalvm 内置require 模块的开启
    Calling out from Java to JavaScript (with call back) – leveraging interoperability support of GraalVM
    web开发 api 资源跨域的一种实践
    使用rollup 转换commonjs 模块为es6 模块,方便的支持graalvm 模块兼容
    使用json-mask 查询json 数据
    nginx njs docker 试用
    使用nginx-prometheus-exporter 监控nginx
    wso2 关于graphql 的方案
    docker也一直发展
    操作系统-容器-Docker:如何将应用打包成为 Docker 镜像?
  • 原文地址:https://www.cnblogs.com/zjjing/p/15034669.html
Copyright © 2011-2022 走看看