抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

jira提供了rest api,JIRA是基于官方的api封装的python库。结合该库可以做一些查询或者新增修改操作,集成在项目中。

安装

1
pip install jira

使用

初始化

1
2
3
4
5
6
7
8
9
10
11
from jira import JIRA

JIRA_CONF = {
"url": "",
"username": "",
"passwd": ""
}
# 初始化
jiraInstance = JIRA(
server=JIRA_CONF.get("url"),
basic_auth=(JIRA_CONF.get("username"), JIRA_CONF.get("passwd")))

获取所有分组信息

1
2
3
4
all_groups = jiraInstance.groups()

# 返回格式如下
# ['', '', '']

列表中的内容为str类型,没有可用方法。

获取所有项目组信息

1
2
3
all_projects = jiraInstance.projects()
# 返回格式如下
# [<JIRA Project: key='', name='', id=''>, <JIRA Project: key='', name='', id=''>]

返回一个列表,列表中包含对象类型为<class 'jira.resources.Project'>

任意取一个

1
2
3
4
5
6
7
project = all_projects[0]

project.id # 项目id
project.name # 项目名
project.projectTypeKey # 项目类型,如software
project.avatarUrls # 项目头像对象
project.raw # 包含以上内容 dict类型

获取项目相关信息

1
project_details = jiraInstance.project(id=) # 传入项目组的id

返回一个``对象,其下包含以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
project_details.roles # 项目下的角色
# 如project_details.roles.Administrators, project_details.roles.Developers这样

project_details.versions # 项目下的发布版本
project_details.id # 项目id
project_details.issueTypes # 该项目的jira任务类型 Epic(任务) Improvement(改进) Bugs(等)
project_details.name # 项目名字
project_details.lead # 项目leader
project_details.projectTypeKey # 项目类型
project_details.description # 项目描述
project_details.components # 模块
project_details.archived # 是否归档 True or False
project_details.assigneeType # 经办人类型(默认UNASSIGNED 未指派)
project_details.avatarUrls # 头像地址
project_details.raw # 返回一个字典对象,包含了上述内容 dict类型

获取项目中任意角色的下的用户信息

1
2
project_admin_roles = jiraInstance.project_role(project='', id=).actors
# 传入projectname 和 role id

返回一个list ,里面是<class 'jira.resources.PropertyHolder'>格式

任取一个

1
2
3
4
5
6
user1 = project_admin_roles[0]
user1.id # userid
user1.displayName # 展示的名字
user1.type # 类型
user1.name # 名字
user1.avatarUrl # 头像地址

获取用户信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
user = jiraInstance.user(id=)
# 这里有个误区,变量名字为id,其实是对应的username

# 对应属性
user.displayName # 页面展示的名字
user.emailAddress # 邮箱
user.groups.items # 所属分组
user.name # 名字
user.locale # 语言
user.timeZone #时区
user.applicationRoles.items # 所属角色
user.active # 是否使用
user.avatarUrls # 头像地址
user.raw # 包含上述 dict类型

获取版本相关信息

1
2
# 获取所有版本,需要传project name
all_versions = jiraInstance.project_versions(project='')

返回值是list对象,包含所有的发布版本(同修复版本),默认按时间升序返回, 任取一个

1
first_version = all_versions[0]

返回一个值为<class 'jira.resources.Version'>类型,其下包含以下内容

1
2
3
4
5
6
7
8
9
first_version.JIRA_BASE_URL  # {server}/rest/{rest_path}/{rest_api_version}/{path}
first_version.projectId # 通过上述ISC返回所有的版本 这个值应该都是一样的
first_version.name # 版本名字
first_version.releaseDate # 发布日期
first_version.userReleaseDate # 不知道是啥api没翻到 返回值跟releaseDate一样,格式不同
first_version.released # 是否发布 True or False
first_version.archived # 是否归档 True or False
first_version.overdue # 是否逾期 True or False
first_version.raw # 返回一个字典对象,包含了上述内容 dict类型

获取jira相关信息

1
jira_issue = jiraInstance.issue("") # 此处填入jiraid

返回值为<class 'jira.resources.Issue'>类型

1
2
3
# 该对象常用字段如下
jira_issue.fields # 返回了该jira单下的所有字段,和每个字段下的属性
jira_issue.raw # 包含所有内容 dict类型

常用字段和使用方法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
jira_issue.fields.key # jiraid
jira_issue.fields.summary # 摘要也就是标题
jira_issue.fields.labels # 标签
jira_issue.fields.issuetype.name # 问题类型
jira_issue.fields.project.key # 归属项目组
jira_issue.fields.project.name # 项目组名字
jira_issue.fields.status.name # jira状态 如Closed, Done
jira_issue.fields.resolution.name # 解决状态 如 已解决
jira_issue.fields.customfield_10800 # 测试人员信息 (name/displayName等常用信息)
jira_issue.fields.customfield_10105 # 开发人员信息 (name/displayName等常用信息)
jira_issue.fields.reporter.key # 报告人的key
jira_issue.fields.reporter.displayName # 报告人名字
jira_issue.fields.assignee.key # 经办人的key
jira_issue.fields.assignee.displayName # 经办人信息名字
jira_issue.fields.priority.name # 优先级 如P1 P2 P3
jira_issue.fields.customfield_10704 # Sprint信息
jira_issue.fields.created # 创建时间
jira_issue.fields.updated # 更新时间
jira_issue.fields.resolutiondate # 解决时间
jira_issue.fields.customfield_10802 # 计划上线时间
jira_issue.fields.fixVersions.name # 修复版本
jira_issue.fields.customfield_10302 # 来源
jira_issue.fields.description # 描述
jira_issue.fields.comment.comments # 所有注释

jira_issue.fields.subtasks # 列表包含子任务,每一个子任务有id ,key,self等属性
# 其中jira_issue.fields.subtasks.id为子任务的id
# jira_issue.fields.subtasks.key 为jiraid 可以再使用jiraInstance.issue("")来获取其子任务的全部信息
# jira_issue.fields.subtasks.self为访问url
# jira_issue.fields.subtasks.fields['summary']子任务标题
# jira_issue.fields.subtasks.fields['status']['name']为子任务状态如Closed, Done

使用搜索功能

1
search_results = jiraInstance.search_issues() # 括号内填写搜索语句

搜索语句怎么写? 不要慌,打开jira右上角搜索

随便写一些筛选条件

image.png

然后点高级,自动转换为语句,可以复制粘贴拿过来用

image.png

搜索这里有点类似于sql,多个条件用AND连接 一些内置方法如上图 currentUser() 需要加小括号,大多数条件都是多选的,所有用了in,多写就会了。

获取Jira的字段

1
2
3
4
5
6
7
8
9
10
11
12
all_fields = jiraInstance.fields()
# 该方法发挥一个list,里面内容为dict类型,每一个dict均包含一个字段的属性
任取一个字短
field = all_fields[0]

field.id # 字段id (虽然叫id其实并不是数字类型)
field.name # 字段名,在页面上展示
field.searchable # 是否支持搜索 True or False
field.custom # 是否为自定义字段True or False
field.orderable # 是否支持排序(在搜索处会用到)
field.clauseNames # 子属性名字 如name为Issue Type的字段子属性包含了issuetype和type
field.schema # 可理解为该字段的配置

字段分为jira自带和自定义的字段,自带的字段如labels(标签) watches(关注者)fixVersions(解决版本)project(项目)issuetype(jira类型)等。

自定义字段,一般id格式为customfield_ + 五位数id,各公司有所不同就不多说了。

评论