jenkins+jmeter+钉钉预警
- 建设一个自由风格的项目
- 进入项目配置
1)新增一个shell 脚本
rm -rf testreport 配置删除的文件
mkdir testreport 新建一个文件
cp result.jmx /var/lib/jenkins/workspace/jmeter_result/testreport copy 执行文件到相关路径下
2)新增一个run performance test
添加需要执行的文件的名称
- 添加一个python 脚本
- liunx 上添加jmeter文件
在jmeter的workspace 文件上添加一个自己的文件夹,并将jmeter 脚本放入到文件夹中
- 编写python 的xml 解析脚本及钉钉机器人发送消息的脚本
from xml.dom.minidom import parse
import xml.dom.minidom
import requests
import json
DomTree = xml.dom.minidom.parse('C:\\Users\\think\\Desktop\\aggregate-results.xml')
collection = DomTree.documentElement
groups = collection.getElementsByTagName('Group')
//打开文件并准备写入
doc = open('.\aggregate-results.txt',mode='w',encoding='utf-8')
for group in groups:
print('******group******')
if group.hasAttribute('label'):
print('Group: %s'%group.getAttribute('label'),file=doc)
succ = group.getElementsByTagName('succ')[0]
name = succ.getElementsByTagName('name')[0]
print('name: %s' %name.childNodes[0].data,end= ' ',file=doc)
value1 = succ.getElementsByTagName('value')[0]
print('value: %s' %value1.childNodes[0].data,end=' ',file=doc)
fail = group.getElementsByTagName('fail')[0]
name = fail.getElementsByTagName('name')[0]
print('name: %s' %name.childNodes[0].data,end= ' ',file=doc)
value2 = fail.getElementsByTagName('value')[0]
print('value: %s' %value2.childNodes[0].data,file=doc)
if value2.childNodes[0].data != '0':
f = group.getAttribute('label')
webhook = 'https://oapi.dingtalk.com/robot/send?access_token={webhook }'
header ={
"Content-Type": "application/json",
"Charset": "UTF-8"
}
body ={
"at": {
"atMobiles":[
"{手机号}"
],
"isAtAll": False
},
"text": {
"content":'接口失败的有%s' %f
},
"msgtype":"text"
}
// 转化为json
mesg_json = json.dumps(body)
print('接口'+ f +'失败',file=doc)
info = requests.post(url=webhook,data=mesg_json,headers=header)
print(info.text)
else:
print('接口'+ group.getAttribute('label') +'成功',file=doc)
print('------'*10,file=doc)
doc.close()
- 运行脚本查看并校验
- 在jenkins 中配置定时时间,配置时间为 2h 一次