Jira提供了完善的RESTful API,如果不想直接请求API接口可以使用Python的Jira库来操作Jira
jira Python文档https://jira.readthedocs.io/en/latest/
安装:pip install jira
认证:Jira的访问是有权限的,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式:
通过Cookis方式认证(用户名,密码)
通过Basic Auth方式认证(用户名,密码)
通过OAuth方式认证
认证方式只需要选择一种即可,以下代码为使用Cookies方式认证。
from jira import JIRA
jira=JIRA(server='http://jira.xxx.com/jira',auth=('账号','密码'))
返回的jira对象便可以对Jira进行操作:
项目(Project)
项目对象的主要属性及方法如下:
key: 项目的Key
name: 项目名称
description: 项目描述
lead: 项目负责人
projectCategory: 项目分类
components: 项目组件
versions: 项目中的版本
raw: 项目的原始API数据
# 访问权限的项目列表
print(jira.projects())
# 项目key
print(jira.project("KB").key)
# 项目名称
print(jira.project("KB").name)
# 项目描述
print(jira.project("KB").description)
# 项目负责人
print(jira.project("KB").lead)
# 项目模块
print(jira.project("KB").components)
# 项目版本
print(jira.project("KB").versions)
# 项目的原始API数据
print(jira.project("KB").raw)
问题(Issue)
Issue是Jira的核心,Jira中的任务,用户Story,Bug实质上都是一个Issue。
单个问题对象可以通过jira.issue("问题的Key")得到,问题的主要属性和方法如下:
id: 问题的id
key: 问题的Key
permalink(): 获取问题连接
fields: 问题的描述,创建时间等所有的配置域
raw: 问题的原始API数据
#问题的id
print(jira.issue('KB-18900').id)
#问题的Key
print(jira.issue('KB-18900').key)
#问题的描述,创建时间等所有的配置域
print(jira.issue('KB-18900').permalink())
#问题的原始API数据
print(jira.issue('KB-18900').raw)
配置域(Fields)
一般问题的ields中的属性分为固定属性和自定义属性,自定义属性格式一般为类似customfield_10012这种。常用的问题的Fields有:
assignee:经办人
created: 创建时间
creator: 创建人
labels: 标签
priority: 优先级
progress:
project: 所示项目
reporter: 报告人
status: 状态
summary: 问题描述
worklog: 活动日志
updated: 更新时间
watches: 关注者
comments: 评论
resolution: 解决方案
subtasks: 子任务
issuelinks: 连接问题
lastViewed: 最近查看时间
attachment
#经办人
print(jira.issue('CB-18900').fields.assignee)
#创建人
print(jira.issue('CB-18900').fields.creator)
#报告人
print(jira.issue('CB-18900').fields.reporter)
#责任人
print(jira.issue('CB-18900').fields.customfield_10316)
#创建时间
print(jira.issue('CB-18900').fields.created)
#标签
print(jira.issue('CB-18900').fields.labels)
#优先级
print(jira.issue('CB-18900').fields.priority)
#问题类型
print(jira.issue('CB-18900').fields.issuetype)
#所示项目
print(jira.issue('CB-18900').fields.project)
#状态
print(jira.issue('CB-18900').fields.status)
#问题描述
print(jira.issue('CB-18900').fields.summary)
#活动日志
print(jira.issue('CB-18900').fields.worklog)
#更新时间
print(jira.issue('CB-18900').fields.updated)
#关注着
print(jira.issue('CB-18900').fields.watches)
关注者/评论/附件
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',
'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)
# 分配问题
jira.assign_issue(issue, 'newassignee')
# 转换问题
jira.transition_issue(issue, '5', assignee={'name': 'pm_user'}, resolution={'id': '3'})
提交bug
# 提交BUG
issue_dict = {
'project': {'id': 10202},#项目id
'summary': '测试',#BUG概要
'description': '测试',#BUG详情
'priority': {'name':'Low'},#bug优先级
'assignee':{'name':'chengzi@x.com'},#分配人
'customfield_10316':{'name':'chengzi@x.com'},#责任人
'labels': ['大大项目'],#所属项目
'issuetype': {'id': 10004}#问题类型-故障
}
new_issue = jira.create_issue(issue_dict)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有