前沿:最近需要對jira項目中issue的規范性進行檢查,故研究了一下python中的第三方包jira,並在此做以記錄。
參考文檔:https://jira.readthedocs.io/en/latest/index.html
1.安裝
pip install jira
2.操作實例
下面是一個快速使用的例子:
1 # 這個腳本顯示了如何在匿名模式下使用客戶機 2 # 域名地址jira.atlassian.com. 3 from jira import JIRA 4 import re 5 6 # 默認情況下,客戶端將連接到從Atlassian插件SDK啟動的JIRA實例。 7 # 參見:https://developer.atlassian.com/display/DOCS/Installing+the+Atlassian+Plugin+SDK for details 8 # 使用option參數鏈接服務 9 options = { 10 'server': 'https://jira.atlassian.com'} 11 jira = JIRA(options) 12 13 # 使用server參數直接鏈接服務,和上述鏈接方式任選一種即可 14 # jira = JIRA(server='https://jira.abcft.com') 15 16 # 匿名權限下獲取所有能看到的項目 17 projects = jira.projects() 18 19 # 按照所有項目的key進行排序並只取key中包含大寫字母E的key,然后返回第二個、第三個和第四個key。 20 keys = sorted(filter(lambda x: re.search(r'E', x), [project.key for project in projects]))[2:5] 21 22 # 獲得一個問題 23 issue = jira.issue('JRA-1330') 24 25 # 找到Atlassians在這個問題上的所有評論 26 atl_comments = [comment for comment in issue.fields.comment.comments 27 if re.search(r'@atlassian.com$', comment.author.emailAddress)] 28 29 # 在這個問題上添加一個評論 30 jira.add_comment(issue, 'Comment text') 31 32 # 修改已選擇問題的摘要和描述 33 issue.update( 34 summary="I'm different!", description='Changed the summary to be different.') 35 36 # 在不發送更新的情況下更改問題 37 issue.update(notify=False, description='Quiet summary update.') 38 39 # 你可以像這樣更新整個標簽 40 issue.update(labels=['AAA', 'BBB']) 41 42 # 或者修改現有標簽的列表。新標簽是沒有空格的unicode字符串 43 issue.fields.labels.append(u'new_text') 44 issue.update(fields={"labels": issue.fields.labels}) 45 46 # 刪除這個問題 47 issue.delete() 48 49 # 將兩個問題進行關聯 50 issue = jira.issue('JRA-1330') 51 issue2 = jira.issue('XX-23') # could also be another instance 52 jira.add_remote_link(issue, issue2)
下面這個例子展示了如何使用JIRA用戶名和密碼進行身份驗證:
1 from collections import Counter 2 from jira import JIRA 3 4 jira = JIRA(basic_auth=('admin', 'admin')) # a username/password tuple 5 6 # 獲取此服務器的可變應用程序屬性(需要支支系統管理員權限) 7 props = jira.application_properties() 8 9 # 找到報告人為admin的所有問題 10 issues = jira.search_issues('assignee=admin') 11 12 # 在報告人為管理員的報告中,問題最多的三個項目 13 top_three = Counter( 14 [issue.fields.project.key for issue in issues]).most_common(3)
下面的例子使用JQL對問題進行刪選:
1 from collections import Counter 2 from jira import JIRA 3 4 jira = JIRA(basic_auth=('admin', 'admin')) # a username/password tuple 5 6 # 獲取此服務器的可變應用程序屬性(需要支支系統管理員權限) 7 props = jira.application_properties() 8 9 # 獲得滿足篩選條件的問題 10 # 第一個條件的作用(項目的key或者id在這個元組中即可) 11 # 第二個條件的作用是選擇問題的狀態(open:開放,resolved: 已解決,in progress:處理中,reopened:重新打開,closed:關閉) 12 # 第三個條件的作用是篩選問題類型為故障 13 # 第四個條件篩選問題的創建時間在24小時內(Y:年,m:月,d:天,H:小時,M:分鍾,S:秒) 14 # maxResults的作用是一次獲取多少個問題,默認為50 15 issues_in_proj = jira.search_issues( 16 'project in (EDB, MAP, MAP, NSTS, SJZZQ, SJZXGGYB, SJZD, HSGSSHQ, PCXT, SJZXYBGLXT, SJZXFCTJR) and status=open and issuetype="故障" and created >= "-24H"', 17 maxResults=100)