- 用命令行的方式使用jira的REST API需要特定权限, 可以跟管理员申请权限.
命令备忘:
curl -u username -X GET -H "Content-Type: application/json" https://jira.xx.com/rest/api/2/search?jql=project=projectname&status=open
- 要想在命令行终端通过-u user:password的方式一次性将访问jira的用户名和密码传给jira, 则要确保password中没有特殊的shell字符或字符组合,比如#!,&
否则,就得考虑在程序中把用户名和密码作为字符串变量
- 搜索jira中的某一类jira时,可以先在jira界面通过高级搜索功能将搜索条件输入进去,然后点击搜索,得到搜索结果之后,查看浏览器地址栏中的jql参数,这个参数同样可以用于REST API中的搜索功能, 比自己去写搜索条件更加准确可靠.
- 浏览器搜索条件中的特殊字符最好都转化为对应的十六进制数来处理(在前面加一个%字符),尤其是在shell命令行或者python脚本程序中,&一类的字符容易被shell/python自己的程序解析处理.
- JIRA的REST API搜索结果有一个最大返回结果限制,maxResults默认为50个.我尝试了将maxResults=1000最为一个输入参数传递给jira 搜索接口,但是无法识别.于是将搜索范围进一步缩小(project/status/duedate),50个基本上可满足要求.
- 比较duedate和当前datetime之间的差值可以使用python库中的datetime模块, 两个datetime之间的差值delta形如 12 days, 9:28:18.960738, 差值由两个部分组成: delta.days和delta.seconds. 其中seconds是不足一天的秒数.
下面的例子可以求Duedate和今天之间相差的天数:
#!/usr/bin/python
#假设duedate是2018-9-30
import datetime
due = datetime.datetime(2018, 9, 30)
td = datetime.datetime.today()
delta = due -td
print delta.days
print delta.seconds/3600
有用的资料:
https://confluence.atlassian.com/jira064/advanced-searching-720416661.html
例子:
curl -u usernaem -X GET -H "Content-Type: application/json" https://jira.xx.com/rest/api/2/search?jql=project%20%3D%20IPCSDK%20AND%20status%20%3D%20Open