利用jira-python對jira項目

前沿:最近須要對jira項目中issue的規範性進行檢查,故研究了一下python中的第三方包jira,並在此作以記錄。html

參考文檔:https://jira.readthedocs.io/en/latest/index.htmlpython

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用戶名和密碼進行身份驗證:app

 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對問題進行刪選:ui

 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)
相關文章
相關標籤/搜索