Xác thực Jira cung cấp API RESTful hoàn chỉnh, và nếu không muốn gọi trực tiếp các API, bạn có thể sử dụng thư viện Jira của Python để thao tác. Thư viện này hỗ trợ 3 phương thức xác thực:
- Xác thực qua Cookies (tên người dùng, mật khẩu)
- Xác thực qua Basic Auth (tên người dùng, mật khẩu)
- Xác thực qua OAuth
Chỉ cần chọn một phương thức. Dưới đây là ví dụ về xác thực qua Cookies.
from jira import JIRA
jira = JIRA('http://jira.***.com/', auth=('tên_đăng_nhập', 'mật_khẩu'))
Đối tượng jira được trả về có thể sử dụng để thao tác với Jira, bao gồm:
- Dự án
- Vấn đề
- Tìm kiếm
- Người theo dõi
- Bình luận
- Tệp đính kèm
Dự án (Project)
jira.projects(): Danh sách tất cả dự ánjira.project("key_dự_án"): Chi tiết dự án cụ thể
Các thuộc tính và phương thức chính của đối tượng dự án:
key: Khóa của dự ánname: Tên dự ándescription: Mô tả dự ánlead: Người phụ trách dự ánprojectCategory: Loại dự áncomponents: Các thành phầnversions: Các phiên bảnraw: Dữ liệu API gốc
Ví dụ:
print(jira.projects()) # In danh sách dự án có quyền truy cập
project = jira.project('key_dự_án')
print(project.key, project.name, project.lead)
Vấn đề (Issue)
Vấn đề trong Jira bao gồm các nhiệm vụ, user story, bug. Đối tượng vấn đề có thể lấy thông qua jira.issue("key_vấn_đề"). Các thuộc tính và phương thức chính:
id: ID vấn đềkey: Khóa vấn đềpermalink(): Lấy liên kết vấn đềfields: Các trường mô tả, thời gian tạo, v.v.raw: Dữ liệu API gốc
Trường (Fields)
Trường của vấn đề bao gồm các thuộc tính cố định và tùy chỉnh. Các trường thường dùng:
assignee: Người được giaocreated: Thời gian tạocreator: Người tạolabels: Nhãnpriority: Độ ưu tiênproject: Dự ánreporter: Người báo cáostatus: Trạng tháisummary: Mô tả vấn đềworklog: Nhật ký công việcupdated: Thời gian cập nhậtwatches: Người theo dõicomments: Bình luậnresolution: Giải phápsubtasks: Công việc conissuelinks: Liên kết vấn đềlastViewed: Thời gian xem gần nhấtattachment: Tệp đính kèm
Ví dụ:
issue = jira.issue('JRA-1330')
print(issue.key, issue.fields.summary, issue.fields.status)
Người theo dõi / Bình luận / Tệp đính kèm
jira.watchers(): Người theo dõijira.add_watcher(): Thêm người theo dõijira.remove_watcher(): Xóa người theo dõijira.comments(): Tất cả bình luậnjira.comment(): Một bình luận cụ thểjira.add_comment(): Thêm bình luậncomment.update() / delete(): Cập nhật / Xóa bình luậnjira.add_attachment(): Thêm tệp đính kèm
Ví dụ:
issue = jira.issue('JRA-1330')
print(jira.watchers(issue)) # Tất cả người theo dõi
jira.add_watcher(issue, 'tên_người_dùng') # Thêm người theo dõi
print(jira.comments(issue)) # Tất cả bình luận
comment = jira.comment(issue, '10234') # Một bình luận cụ thể
jira.add_comment(issue, 'bình_luận_mới') # Thêm bình luận
comment.update(body='cập_nhật_bình_luận') # Cập nhật bình luận
comment.delete() # Xóa bình luận
print(issue.fields.attachment) # Tệp đính kèm
jira.add_attachment(issue=issue, attachment='/đường_dẫn/tệp.txt') # Thêm tệp đính kèm
Tạo / Phân công / Chuyển đổi vấn đề
jira.create_issue(): Tạo vấn đềjira.create_issues(): Tạo nhiều vấn đềjira.assign_issue(): Phân công vấn đềjira.transitions(): Lấy quy trình làm việcjira.transition_issue(): Chuyển đổi vấn đề
Ví dụ:
# Tạo vấn đề
issue_dict = {
'project': {'id': 123},
'summary': 'Vấn đề mới từ jira-python',
'description': 'Xem xét vấn đề này',
'issuetype': {'name': 'Bug'},
}
new_issue = jira.create_issue(fields=issue_dict)
# Tạo nhiều vấn đề
issue_list = [
{
'project': {'id': 123},
'summary': 'Vấn đề đầu tiên trong nhiều vấn đề',
'description': 'Xem xét vấn đề này',
'issuetype': {'name': 'Bug'},
},
{
'project': {'key': 'FOO'},
'summary': 'Vấn đề thứ hai',
'description': 'Một vấn đề khác',
'issuetype': {'name': 'Bug'},
},
{
'project': {'name': 'Bar'},
'summary': 'Vấn đề cuối cùng',
'description': 'Vấn đề cuối cùng trong lô.',
'issuetype': {'name': 'Bug'},
}
]
issues = jira.create_issues(field_list=issue_list)
# Phân công vấn đề
jira.assign_issue(issue, 'người_phân_công')
# Chuyển đổi vấn đề
jira.transition_issue(issue, '5', assignee={'name': 'pm_user'}, resolution={'id': '3'})
Tìm kiếm Jira cung cấp khả năng tìm kiếm mạnh mẽ với ngôn ngữ JQL (Jira Query Language). Thư viện Python sử dụng JQL để tìm kiếm, trả về danh sách vấn đề.
jira.search_issues('JQL_statement')
Mặc định, số kết quả tối đa là 1000, nhưng có thể cấu hình thông qua tham số maxResults. Đặt -1 để không giới hạn số lượng kết quả.
jira.search_issues('project=PROJ and assignee = currentUser()', maxResults=-1)