目录
需求背景:项目上线前,需要每日下班前进行bug统计,发送到飞书群中
需求背景:
项目上线前,需要每日下班前进行bug统计,发送到飞书群中
实现效果:
通过Jenkins定时构建,统计当日新增未解决bug、当前版本未解决bug、待验证bug、当前版本bug总数,触发飞书机器人发送相关信息到项目群中,点击bug数量可跳转到jira
代码结构(详细代码见下):
class BugCounts:
def __init__(self, project=os.environ['project'], jira_ip=JIRA_URL, jira_user=user_name,jira_pwd=pwd,label=os.environ['label'],feishu_url=os.environ['feishu_url']):
self.jira_ip = jira_ip
self.jira_user = jira_user
self.jira_pwd = jira_pwd
self.jr = JIRA(r'https://{0}'.format(jira_ip), auth=(jira_user, jira_pwd))
self.project = project
self.label = label
self.feishu_url = feishu_url
def new_bugs_count(self):
"""
今日新增未解决bug统计
:return:
"""
# all_bug = self.jr.search_issues(jql_str=f'project = {self.project} AND status = "To Do" AND created >= -12h')
# 如果用户未上传项目版本号,则统计的是当前项目所有版本的今日新增未解决bug
if self.label == 'None':
jql_str = 'project = {0} AND status in ("To Do", 处理中, 重新打开) AND created >= -12h'.format(self.project)
bug_href = 'https://{0}/issues/?jql=...{1}'.format(self.jira_ip,
self.project)
else:
jql_str = 'project = {0} AND status in ("To Do", 处理中, 重新打开) AND labels = {1} AND created >= -12h'.format(
self.project, self.label)
bug_href = 'https://{0}/issues/?jql=...{1}...{2}...'.format(self.jira_ip
self.project, self.label)
all_bug = self.jr.search_issues(jql_str=jql_str, maxResults=100000)
return [len(all_bug), bug_href]
def feishu_robot(self):
feishu_url = self.feishu_url
if self.label == 'None':
title = "{0}bug统计".format(self.project)
else:
title = "{0}-{1}bug统计".format(self.project, self.label)
res = requests.post(url=feishu_url,
headers={'Content-Type': 'application/json'},
json={'msg_type': "post",
'content': {"post": {"zh_cn": {
'title': title,
'content': [
[
{"tag": "text", "text": '今日新增未解决bug:'},
{"tag": "a", "href": self.new_bugs_count()[1],
"text": "{0}个".format(self.new_bugs_count()[0])}
],
[
{"tag": "text", "text": '当前版本未解决bug:'},
{"tag": "a", "href": self.unhandled_bugs_count()[1],
"text": "{0}个".format(self.unhandled_bugs_count()[0])}
],
[
{"tag": "text", "text": '待验证bug:'},
{"tag": "a", "href": self.ready_to_test_bugs_count()[1],
"text": "{0}个".format(self.ready_to_test_bugs_count()[0])}
],
[
{"tag": "text", "text": '当前版本bug总数:'},
{"tag": "a", "href": self.all_bugs_count()[1],
"text": "{0}个".format(self.all_bugs_count()[0])}
]
]
}}}})
print(res.json())
添加飞书机器人:
选择飞书群--设置--群机器人--添加机器人--添加自定义机器人
填写机器人名称、描述--点击添加
添加成功后,会生成一个webhook地址,要保存好此地址哦,调用飞书机器人用到的就是这个地址
飞书推送消息的内容、格式可以自己构造,具体参照开发文档 - 飞书开放平台
Jenkins自动构建配置
使用参数化构建+定时构建+自动拉取gitlab代码(Jenkins获取gitlab代码可见:Jenkins拉取gitlab代码)
设置构建参数,这些参数脚本中需要引用
定时构建:
都配置完成后就可以构建运行啦~(第一次写文章,如有不清晰、描述不正确的地方还请各位老师多多指正 轻点喷哈)