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

 

 

 搞定!!

 

posted @ 2021-07-20 14:16  张小七soso  阅读(220)  评论(0编辑  收藏  举报