Jenkins自动化测试构建完成 发送钉钉消息
背景
有时自动化测试完成后,我们可以通过构建完成后给钉钉群发消息,这样就能及时通知到所有人员了。
接入流程
1:建立钉钉机器人,可以通过群助手,添加机器人,增加WebHook自定义接入,然后添加完成会生成一个Webhook,把这个webhook拷贝下来。



这里是官方文档地址 可以查看钉钉开放文档 https://open.dingtalk.com/document/group/custom-robot-access
笔者是通过python来发送的代码如下,把url和secert替换为你的即可
# -*- coding: utf-8 -*-
# @Time : 2023/5/9 0009 10:36
# @Author : zcj
# @File : Ding_send.py
# @Software : PyCharm # 获取jenkins构建信息和本次报告地址 import os
import time
import hmac
import hashlib
import base64
import urllib.parse
import jenkins #安装pip install python-jenkins
import json
import urllib3 from urllib3.exceptions import InsecureRequestWarning
timestamp = str(round(time.time() * 1000))
secret = 'SEC5103f3f646fc7b2010207ff5883da2c2c4eeef437a14b17c446' #替换成自己的值
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
# print(timestamp)
# print(sign)
#钉钉通知的接口地址
url = f'https://oapi.dingtalk.com/robot/send?access_token=64d0f36d9be5c4ab7c210f56ac5f495cc22760e2d7b6f45fa2c90722×tamp={timestamp}&sign={sign}' #钉钉群的token #利用python发送钉钉 在钉钉需要点击 查看测试报告的话 就需要把报告发送到服务器 再把地址参数传下面 就去掉jenkins所有操作
# jenkins登录地址
jenkins_url = "http://192.167.6.205:8080/jenkins/"#Jenkins地址
# 获取jenkins对象
server = jenkins.Jenkins(jenkins_url, username='admin', password='admin') #Jenkins登录名 ,密码
# job名称
job_name = "job/pytest_api/" #Jenkins运行任务名称
# job的url地址
job_url = jenkins_url + job_name
# 获取最后一次构建
job_last_build_url = server.get_info(job_name)['lastBuild']['url']
# 报告地址
report_url = job_last_build_url + 'allure' #'allure'为我的Jenkins全局工具配置中allure别名 '''
钉钉推送方法:
读取report文件中"prometheusData.txt",循环遍历获取需要的值。
使用钉钉机器人的接口,拼接后推送text
''' def DingTalkSend():
d = {}
# 获取项目绝对路径
path = os.path.abspath(os.path.dirname((__file__)))
# 打开prometheusData 获取需要发送的信息
f = open(path + r'/allure-report/export/prometheusData.txt', 'r') #allure测试数据报告的路径
for lines in f:
for c in lines:
launch_name = lines.strip('\n').split(' ')[0]
num = lines.strip('\n').split(' ')[1]
d.update({launch_name: num})
print(d)
f.close()
retries_run = d.get('launch_retries_run') # 运行总数
print('运行总数:{}'.format(retries_run))
status_passed = d.get('launch_status_passed') # 通过数量
print('通过数量:{}'.format(status_passed))
status_failed = d.get('launch_status_failed') # 不通过数量
print('失败数量:{}'.format(status_failed))
pass_re = "%.f%%" % (float(status_passed)/float(retries_run)*100)
print("通过率:{}".format(pass_re)) # 钉钉推送 con = {"msgtype": "text",
"text": {
"content": "Pytest_Allure_Demo自动化脚本执行完成。"
"\n测试概述:"
"\n运行总数:" + retries_run +
"\n通过数量:" + status_passed +
"\n失败数量:" + status_failed +
"\n通过率:" + pass_re +
"\n构建地址:\n" + job_url +
"\n报告地址:\n" + report_url
},
"at": {
"atMobiles": [
"130xxxxxxxx" # 如果需要@某人,这里写他的手机号
],
"isAtAll": 1 # 如果需要@所有人,这些写1
} }
try:
urllib3.disable_warnings()
http = urllib3.PoolManager()
jd = json.dumps(con)
jd = bytes(jd, 'utf-8')
http.request('POST', url, body=jd, headers={'Content-Type': 'application/json'}) except Exception as e:
print(e) if __name__ == '__main__':
DingTalkSend()
3、把py代码放到jenkins的workspace的构建目录下


最后钉钉群通知如下:

待续...
Jenkins自动化测试构建完成 发送钉钉消息的更多相关文章
- jenkins 构建后发送钉钉消息通知(插件)
钉钉,越来越多的公司采用,那么我们在持续集成中,也可以直接选择钉钉插件的,在之前的博客中 ,对发送的钉钉消息进行了定制,那样的话会开启一个新的任务, 其实今天呢,我们可以直接安装一个插件就可以发送了, ...
- Jenkins构建项目后发送钉钉消息推送
前言 钉钉是我们日常工作的沟通工具,在Jenkins构建持续集成项目配合钉钉机器人的功能,可以让我们在持续集成测试环节快速接收到测试结果的消息推送. 一:新建一个钉钉群,选择自定义机器人 二:添加机器 ...
- 钉钉机器人集成Jenkins推送消息模板自定义发送报告
一.由于公司同样也使用了钉钉.那么在做Jenkins集成自动化部署的时候,也是可以集成钉钉的. 那种Jenkins下载钉钉插件集成,简单设置就可以完成了.我们今天要做的是,定制化的发送消息. 钉钉推送 ...
- Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
实现Gitlab事件自动触发Jenkins构建及钉钉消息推送 实践环境 GitLab Community Edition 12.6.4 Jenkins 2.284 Post build task 1. ...
- Jenkins环境搭建(7)-集成钉钉消息推送
在去年的时候,搭建了一套Jenkins环境,基本功能已实现,可以通过如下地址查阅. Jenkins环境搭建(1)-下载与安装 Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动 ...
- 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...
- TFS发布计划发送到钉钉消息群
由于工作中需要用到钉钉,每天都要和钉钉打交道:上下班打卡.出差请假流程.各种工作讨论组,不一而足,工作已然和钉钉绑在了一起,难怪有广告词: 微信是一个生活方式,钉钉是一个工作方式. 我们是钉钉机器人内 ...
- .Net调用钉钉接口,实现发送企业消息功能
我在钉钉官网上看了下,关于调用钉钉接口,发送企业消息通知,他给的核心代码总共几行. 用到的一个接口引用 TopSDK.dll 下载网址https://open-doc.dingtalk.com/doc ...
- Jenkins配置项目构建后的钉钉通知
首先在任意一个钉钉群里创建自定义的钉钉机器人,然后能够看到钉钉开放的webhook 复制webhook Jenkins中安装钉钉插件,然后在项目的配置当中,构建后操作里添加钉钉报警 url一般默认已经 ...
- springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)
使用springboot之前,我们发送http消息是这么实现的 我们用了一个过时的类,虽然感觉有些不爽,但是出于一些原因,一直也没有做处理,最近公司项目框架改为了springboot,springbo ...
随机推荐
- 常用模块time模块
时间模块: 一:time import time time的解析: 时间分为三种格式: 第一种: 第二种: 第三种: 二:datatime import datatime #表达形式 print(d ...
- Numpy浅拷贝与深拷贝
Numpy中的浅拷贝与深拷贝 浅拷贝 共享内存地址的两个变量,当其中一个变量的值改变时另外一个也随之改变. Example a = np.array([1, 2, 3, 4, 5]) b = a pr ...
- day110:MoFang:重新构造用户关系状态&添加好友&处理好友申请&获取申请好友历史记录&好友列表显示
目录: 1.用户关系状态:重新构造 2.添加好友 3.处理好友申请 4.获取申请好友历史记录 5.好友列表 day109+day110所学内容流程图 1.用户关系状态:重新构造 在day109博客的前 ...
- ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected DG开启MRP失败
问题描述:在10.2.0.5的备库中open状态下开启实时同步,开启失败.一直卡着,只能强制停止 SQL> alter database recover managed standby dat ...
- laravel 中使用的 PDF 扩展包 laravel-dompdf 和 laravel-snappy
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)
目标和(放满背包的方法有几种) 力扣题目链接(opens new window) 难度:中等 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在你有两个符号 + 和 -.对 ...
- 一天吃透JVM面试八股文
什么是JVM? JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的.由一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一 ...
- LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 前天刚举办 2023 年力扣杯个人 SOLO 赛,昨天周赛就出了一场 Easy - Ea ...
- java Stack(栈)类、Queue和Deque队列
1. java Stack类 特性是:LIFO(后进先出)先进后出,最先进入的在栈底. Stack底层也是通过数组实现的,同时也是线程安全的 Stack stack=new Stack(); //添加 ...
- Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!
开源之夏 2023 学生报名已经正式开启!Apache DolphinScheduler 今年继续参与开源之夏的活动,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同学们可以 ...