1.什么是网络钩子?
网页开发中的网络钩子(Webhook)是一种通过自定义回调函数来增加或更改网页表现的方法。这些回调可被可能与原始网站或应用相关的第三方用户及开发者保存、修改与管理。网络钩子通常被某些事件激活,当此事件发生时,原网站将向为网络钩子配置的URL发送HTTP请求。用户可配置它们引发网页上的事件以调用另一个网站的行为。此操作可为任何事件。网络钩子常用于激活持续整合系统的构建操作或用于提醒缺陷跟踪管理系统。
2.网络钩子之于JIRA 能产生的作用?
用于对接其它系统,发送通知消息:比如当任务分配给指定经办人的时候,给指定的消息系统发送一条通知;当一个严重缺陷产生的时候,自动给对应的责任人打一个电话等等。
调起另一个软件系统的应用:当需求进入测试中的状态的时候,自动触发Jenkins自动化测试用例的执行。 当一个任务进入审批环节时,自动调起公司OA系统的工作流,并发送给相关人员进行审批。
项目信息归集:当项目处于一个状态时,自动同步JIRA项目信息(工时,需求)到公司的项目管理系统,用于项目的立项,结项,成本收益计算等。
如上所举例得,可以看出,JIRA网络钩子,主要是基于设置规则,捕捉JIRA项目信息变化,给外部发送即时消息,调用外部软件,来实现指定的功能。
3.如何创建一个网络钩子?
3.1新建网络钩子:
1 打开系统配置,找到 “系统”
2 高级选项里 找到 “网络钩子”
3 点击“ 创建网络钩子”
3.2配置网络钩子
1 命名
2 url 地址 就是接收jira通知消息的服务器webhook地址,文章后面有两个例子,关于url地址的来源
3 用于规则适用的范围,可以通过jql语句来指定哪些任务的状态变更需要发出消息通知
4 消息触发的条件,涵盖了所有的变更促发情况,如果是一些自定义字段的变更,貌似不包含在内。
4.webhook url 举例
4.1 自定义一个webhook应用
写一个webhook应用 make server模拟生成一个server端口,那么webhook地址就是http://10.19.173.85:5000/open/webhooks,再进行如上JIRA网络钩子设置,当符合条件的项目子任务变更状态的时候,inputdate()函数就会收到对应的json消息。jira 消息对应的json结构,可以通过一次调用,全量打印出来看。再根据json消息格式,来解析jira通知消息数据。
app.route('/open/webhooks',methods=['POST'])
def get_is@sue_status():
try:
input_data = json.loads(request.data)
if input_data['issue']['fields']['issuetype']['name']== '子任务':
updateParentStatus(input_data)
logIssueWorks(input_data)
else:
logging.info('问题类型不是子任务')
return '失败'
except Exception as e:
return '失败'
if __name__ == '__main__':
jira = JIRA(server="https://jira.sverver.com",basic_auth=("*","*"))
server = make_server('10.19.173.85',5000,app)
server.serve_forever()
app.run()
4.2 钉钉群JIRA机器人消息通知
1 打开一个钉钉群,找到钉钉群助手
2 找到JIRA机器人并添加
3 添加JIRA机器人的最后一步,找到对应的webhook url,填写到之前设置的网络钩子中
4 最后符合规则的的jira通知消息就会发送到 钉钉群里