1. 程式人生 > 程式設計 >Python操作Jira庫常用方法解析

Python操作Jira庫常用方法解析

Jira提供了完善的RESTful API,如果不想直接請求API介面可以使用Python的Jira庫來操作Jira

Jira Python文件

安裝方法

pip install jira

認證

Jira的訪問是有許可權的,在訪問Jira專案時首先要進行認證,Jira Python庫提供了3種認證方式:

  • 通過Cookis方式認證(使用者名稱,密碼)
  • 通過Basic Auth方式認證(使用者名稱,密碼)
  • 通過OAuth方式認證

認證方式只需要選擇一種即可,以下程式碼為使用Cookies方式認證。

form jira import JIRA

jira = JIRA('http://jira.***.com/',auth=('使用者名稱','登入密碼')

返回的jira物件便可以對Jira進行操作。主要的操作包括:

  • 專案
  • 問題
  • 搜尋
  • 關注者
  • 評論
  • 附件

專案(Project)

jira.projects(): 檢視所有專案列表

jira.project("專案的Key"): 檢視單個專案

專案物件的主要屬性及方法如下:

  • key: 專案的Key
  • name: 專案名稱
  • description: 專案描述
  • lead: 專案負責人
  • projectCategory: 專案分類
  • components: 專案元件
  • versions: 專案中的版本
  • raw: 專案的原始API資料

示例

print(jira.projects()) # 列印所有你有許可權訪問的專案列表

project = jira.project('某個專案的Key')

print(project.key,project.name,project.lead)

問題(Issue)

Issue是Jira的核心,Jira中的任務,使用者Story,Bug實質上都是一個Issue。

單個問題物件可以通過jira.issue("問題的Key")得到,問題的主要屬性和方法如下:

  • id: 問題的id
  • key: 問題的Key
  • permalink(): 獲取問題連線
  • fields: 問題的描述,建立時間等所有的配置域
  • raw: 問題的原始API資料

配置域(Fields)

一般問題的ields中的屬性分為固定屬性和自定義屬性,自定義屬性格式一般為類似customfield_10012這種。常用的問題的Fields有:

  • assignee:經辦人
  • created: 建立時間
  • creator: 建立人
  • labels: 標籤
  • priorit: 優先順序
  • progress:
  • project: 所示專案
  • reporter: 報告人
  • status: 狀態
  • summary: 問題描述
  • worklog: 活動日誌
  • updated: 更新時間
  • watches: 關注者
  • comments: 評論
  • resolution: 解決方案
  • subtasks: 子任務
  • issuelinks: 連線問題
  • lastViewed: 最近檢視時間
  • attachment

示例如下:

issue = jira.issue('JRA-1330')
print(issue.key,issue.fields.summary,issue.fields.status)

關注者/評論/附件

  • jira.watchers(): 問題的關注者
  • jira.add_watcher(): 新增關注者
  • jira.remove_watcher(): 移除關注者
  • jira.comments(): 問題的所有評論
  • jira.comment(): 某條評論
  • jira.add_comment():新增評論
  • comment.update()/delete(): 更新/刪除評論
  • jira.add_attachment(): 新增附件

示例如下:

issue = jira.issue('JRA-1330')

print(jiaa.watchers(issue)) # 所有關注者
jira.add_watcher(issue,'username') # 新增關注者

print(jira.comments(issue)) # 所有評論
comment = jira.comment(issue,'10234') # 某條評論
jira.add_comment(issue,'new comment') # 新增評論
comment.update(body='update comment') # 更新評論
comment.delete() # 刪除該評論

print(issue.fields.attachment) # 問題附件
jira.add_attachment(issue=issue,attachment='/some/path/attachment.txt') # 新增附件

建立/分配/轉換問題

  • jira.create_issue(): 建立問題
  • jira.create_issues(): 批量建立問題
  • jira.assign_issue(): 分配問題
  • jira.transitions(): 獲取問題的工作流
  • jira.transition_issue(): 轉換問題

示例如下:

# 建立問題
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)

# 批量建立問題
issue_list = [
{
  'project': {'id': 123},'summary': 'First issue of many',},{
  'project': {'key': 'FOO'},'summary': 'Second issue','description': 'Another one',{
  'project': {'name': 'Bar'},'summary': 'Last issue','description': 'Final issue of batch.',}]
issues = jira.create_issues(field_list=issue_list)

# 分配問題
jira.assign_issue(issue,'newassignee')

# 轉換問題
jira.transition_issue(issue,'5',assignee={'name': 'pm_user'},resolution={'id': '3'})

搜尋

Jira的搜尋非常強大,並配有一套專門的搜尋語言,稱為JQL(Jira Query Language),Jira的Python庫便是基於JQL語法進行搜尋的,返回的是搜尋到的問題列表。
使用語句為

jira.search_issues('JQL語句')

預設最大結果數未1000,可以通過maxResults引數配置,該引數為-1時不限制數量,返回所有搜尋結果。

jira.search_issues('project=PROJ and assignee = currentUser()',maxResults=-1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。