Python操作Jira

Jira簡介

Jira是目前比較流行的基于Java架構的管理系統(tǒng)(Atlassian公司支持),有開源代碼,方便做二次開發(fā)(可擴展性)。Jira是一款功能非常強大的管理工具,廣泛的用來 缺陷跟蹤、用例管理、需求收集、任務跟蹤、工時管理、項目計劃管理等工作領域。

python有支持操作Jira的第三方包,方便自定義一些自動化操作。

Jira使用

安裝

pip install jira

Jira認證

from jira import JIRA

options = {'server': 'https://jira.xxxx.com'}
jira = JIRA(basic_auth=("username", "password"),options=options)

這種明文賬號密碼是不安全的,所以可以用另一種用API token的方式進行認證。

https://id.atlassian.com/manage/api-tokens生成你的API token。

from jira import JIRA

options = {'server': 'https://jira.xxxx.com'}
jira = JIRA(basic_auth=("username", YOUR_API_TOKEN),options=options)

官方有更安全的方式,可見Basic auth for REST APIs

issue操作

1.查詢

成功認證登陸上Jira后,可以直接通過issue號查詢單個issue

issue = jira.issue("JIRA-issue-number")

查詢返回的issue JSON會自動編組,并生成issue對象返回,可以直接訪問相應字段

summary = issue.fields.summary         # issue概述
assignee = issue.fields.assignee       # issue當前處理人

為了節(jié)省時間,可以指定需要返回的字段

issue = jira.issue('JRA-1330', fields='summary,comment')

也可以通過JQL查詢符合條件的issues,下方代碼為返回項目為PRO,狀態(tài)不為Done和CLOSED的前500個Bug

jql = 'project=PRO AND Type=Bug AND status NOT IN ("DONE", "CLOSED")'
issues_in_proj = jira.search_issues(jql, maxResults=500)
2.創(chuàng)建

可以通過一個一個參數(shù)創(chuàng)建issue

new_issue = jira.create_issue(project='PROJ_key_or_id', 
                              summary='New issue from jira-python',
                              description='Look into this one', 
                              issuetype={'name': 'Bug'})

也可以通過字典創(chuàng)建

issue_dict = {
    'project': {'id': 123},
    'summary': 'New issue from jira-python',
    'description': 'Look into this one',
    'issuetype': {'name': 'Bug'},
}
new_issue = jira.create_issue(fields=issue_dict)

也可以批量創(chuàng)建多個issues

issue_list = [
{
    'project': {'id': 123},
    'summary': 'First issue of many',
    'description': 'Look into this one',
    'issuetype': {'name': 'Bug'},
},
{
    'project': {'key': 'FOO'},
    'summary': 'Second issue',
    'description': 'Another one',
    'issuetype': {'name': 'Bug'},
},
{
    'project': {'name': 'Bar'},
    'summary': 'Last issue',
    'description': 'Final issue of batch.',
    'issuetype': {'name': 'Bug'},
}]
issues = jira.create_issues(field_list=issue_list)
3.修改更新

issue的分配和取消分配

# 需要有issue分配權限
jira.assign_issue(issue, 'newassignee')
# 取消分配
jira.assign_issue(issue, None)

更新字段

issue.update(summary='new summary', description='A new summary was added')

# 通過字典更新
issue.update(fields={'summary': 'new summary', 'description': 'A new summary was added'})

comment操作

comment跟issue一樣是一個對象??梢酝ㄟ^issue對象或者jira對象獲取comment

comments_a = issue.fields.comment.comments
comments_b = jira.comments(issue) # comments_b == comments_a

可以通過ID獲取單個comment

comment = jira.comment('JRA-1330', '10234')

可以訪問comment的一些信息

author = comment.author.displayName
time = comment.created

添加、編輯和刪除comment也一樣簡單

comment = jira.add_comment('JRA-1330', 'new comment')    # no Issue object required
comment = jira.add_comment(issue, 'new comment', 
                           visibility={'type': 'role', 'value': 'Administrators'})  # for admins only

comment.update(body = 'updated comment body')
comment.delete()

狀態(tài)變更

了解某個issue有哪些可用的狀態(tài)轉換

issue = jira.issue('PROJ-1')
transitions = jira.transitions(issue)
[(t['id'], t['name']) for t in transitions]    # [(u'5', u'Resolve Issue'), (u'2', u'Close Issue')]

Note: 只會返回當前經過身份驗證的用戶可用的狀態(tài)轉換!

然后對issue做相應的狀態(tài)轉換

# 將issue狀態(tài)改為已解決,并將其分配給pm_user
jira.transition_issue(issue, '5', assignee={'name': 'pm_user'}, resolution={'id': '3'})

# 等同
jira.transition_issue(issue, '5', fields={'assignee':{'name': 'pm_user'}, 'resolution':{'id': '3'}})

參考

Jira-python API

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容