第一种:直接使用现有的轮子,也就是封装好的Jira API客户端代码
第二种:通过Http调用Jira的Restful接口
两者相比第一种功能更丰富一些,但是要掌握Jira的API学习成本比较高,第二种上手更快一些,但是需要自己编程处理各种Response。
需要在Jira上配置两个webhook:
第一个WebHook:当主任务的某个环节提交时自动创建子任务,而且子任务的部分属性需要从主任务中来获取。
第二个WebHook:当任务提交时按照我自己的邮件模板向jira中的指定人发送和抄送html格式的邮件。
1 与Jira的鉴权认证
2 根据条件查询Jira任务
3 创建Jira任务
4 html邮件模板
5 发送邮件
对认证信息进行加密:
在发送httl请求时将加密后的认证信息放在请求头:
根据自己Jira属性定制实例对象:
查询Jira并解析response消息体,封装为任务实例对象:
重点:
1 jql就像hsql、sql意义一样,发送查询条件的,startAt、maxResults做分页,fields指定返回属性,expand讲邮件时再说。
2 jira中自定义的字段在代码中是以customfield_XXXX这种形式唯一标识的
3 在对返回值做Json解析时要特别留意时间、人员、下拉列表框等各种复杂类型,并不像文本类型那么简单
4 如果请求报错bad request 404,基本就是jql或fields有问题,可以现在jira页面上尝试操作一次。例如字段在界面不存在但是你代码中又使用到了,就会bad reqeust。
构造post请求的报文:
将报文推送给Jira:
这里同样需要注意bad reqeust和自定义字段唯一标识的问题。
Python常用的模板是Jinjia2,Jiava中我们使用VelocityEngine
velocity文件release_html.vm
pom引用:
采用最通用的spring boot email
前面留了一个坑:查询jira的请求中有一个expend设置了一个renderedFields属性,这个是干什么用的呢?Jira的复杂文本框属性(例如描述、common)支持自带的渲染器,可以对文字颜色、大小、段落等进行编辑和渲染,但是它使用的是Jira内置的格式并不是标准的html,所以需要借助renderedFields对需要渲染的内容进行一次html的转换。如果你只发送text的邮件内容可以把这里的expend去掉。
pom引用:
关于Jira集成的核心是要掌握Restful接口,常用的查询相关是baseUrl+"/rest/api/2/search"这种格式开头,任务相关是baseUrl+"/rest/api/2/issue"开头。
本文完成代码下载地址: https://github.com/yejingtao/ci-jiratool