当前位置:网站首页>Jenkins 联动 飞书 以签名校验方式 推送测试报告通知消息
Jenkins 联动 飞书 以签名校验方式 推送测试报告通知消息
2022-07-19 05:03:00 【⎛⎝⎠⎞世界】
1、获取 飞书 Bot webhook 和 secret。
2、python脚本,参考@Song_Estelle 的文章,这里重写了部分代码,以签名校验方式发送通知(记得安装相关依赖)。
#! /usr/bin/python3
#-*- encoding: utf-8 -*-
import sys
import requests
import time
import hmac
import base64
import hashlib
from datetime import datetime
class JenkinsInfo(object):
def __init__(self, feis_webhook, feis_secret, job_url, job_name, build_number):
self.feis_webhook = feis_webhook
self.feis_secret = feis_secret
self.currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.timestamp = int(time.time()) # datetime.timestamp(datetime.now())
self.JOB_URL = job_url
self.JOB_NAME = job_name
self.BUILD_NUMBER = build_number
def gen_sign(self):
# 拼接timestamp 和 secret
string_to_sign = '{}\n{}'.format(self.timestamp, self.feis_secret)
hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
# 对结果进行base64处理
sign = base64.b64encode(hmac_code).decode('utf-8')
return sign
def feis_post(self):
method = 'post'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400',
'Content-Type': 'application/json'
}
json = {
"timestamp": self.timestamp,
"sign": self.gen_sign(),
"msg_type": "interactive",
"card": {
"config": {
"wide_screen_mode": True,
"enable_forward": True
},
"elements": [{
"tag": "div",
"text": {
"content": "项目名称:" + JOB_NAME + "\n构建编号:第" + BUILD_NUMBER + "次构建\n运行时间:" + self.currenttime,
"tag": "lark_md"
}
}, {
"actions": [{
"tag": "button",
"text": {
"content": "查看报告",
"tag": "lark_md"
},
"url": JOB_URL,
"type": "default",
"value": {}
}],
"tag": "action"
}],
"header": {
"title": {
"content": JOB_NAME + " 构建报告",
"tag": "plain_text"
}
}
}
}
res = requests.request(method=method, url=self.feis_webhook, headers=headers, json=json)
print(res, "=======>>", res.json())
if __name__ == "__main__":
feis_webhook = r"https://open.feishu.cn/open-apis/bot/v2/hook/"
feis_secret = "YPkEsfe"
JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]
BUILD_NUMBER = sys.argv[3]
# JOB_URL = JOB_NAME = BUILD_NUMBER = "123"
t = JenkinsInfo(feis_webhook, feis_secret, JOB_URL, JOB_NAME, BUILD_NUMBER)
t.feis_post()
3、Jenkins项目中添加配置
在配置中的构建中 加上一行命令即可
python3 /usr/local/jenkinsInfo/feishutongzhi.py $JOB_URL $JOB_NAME $BUILD_NUMBER
4、验证
点击“查看报告”可以跳转到Jenkins
引用:
Jenkins+飞书机器人发送通知_Song_Estelle的博客-CSDN博客_飞书机器人向用户个人发消息
https://blog.csdn.net/weixin_43484014/article/details/121950558自定义机器人指南 - 客户端文档 - 开发文档 - 飞书开放平台
https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjNjenkins持续集成飞书发送报告通知 - 测试小小小白 - 博客园
https://www.cnblogs.com/spl-/p/14866221.htmlgitlab、jenkins + webhook 做代码合并管理者的消息通知 - BraveDu
http://www.bravedu.com/archives/204/
边栏推荐
- SQL SERVER 发送邮件失败 提示必须制定收件人
- be based on. Net dynamic compilation technology to realize arbitrary code execution
- C language - linked list creation - merge - delete and other common retest operations
- What are the main aspects of interface testing? What skills are needed? How to learn?
- CacheManager - written in C # Net
- JWT(JSON Web Token)的基础使用
- 单实例Mongo升级为副本集
- Option classes shared by MFC and ATL
- swing窗体打jar包后找不到图片的问题
- 牛客剑指offer 机器人的运动范围
猜你喜欢
Development and testing standard (simple version)
The gratitude and resentment between the four swordsmen and code review: "abandon all chaos" to "prodigal son returns"
Opencv's image processing. This one is enough (I)
Alfred的常见设置
Input text to automatically generate images, it's so fun!
An open source web drawing board is really convenient
pytorch yolo5训练任意训练集
Firewall port forwarding
局域网访问项目注意事项
How to debug the dynamic code generated by C emit?
随机推荐
剑指offer 矩阵中的路径
微信小程序for循环
如何调试 C# Emit 生成的动态代码?
Upgrade the pit stepped in php8
YOLOv5改进之二十一:CNN+Transformer——主干网络替换为又快又强的轻量化主干EfficientFormer
No overlapping interval [greedy practice]
Research Report on research and development prospects of China's strontium carbonate industry (2022 Edition)
STM32 SCT memory control
升级PHP8中踩到的坑
基本页面状态码
nodejs面经
Redis geographic algorithm geo analysis and Application
c语言-链表创建-合并-删除等复试常见操作
pytorch 目标检测数据增强cutmix和mixup混合
Flask framework - model relationships (many to many)
整数的分划问题
21 eigenvalues and eigenvectors
The gratitude and resentment between the four swordsmen and code review: "abandon all chaos" to "prodigal son returns"
.NET 全场景开发终于到来了
Idea SVN trunk merge branch version missing ranges exception error:svn: e195016