Python操作Jira库常用方法解析

作者:临渊 时间:2022-02-06 01:56:11 

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',
 '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'})

搜索

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)

来源:https://www.cnblogs.com/superhin/p/11693280.html

标签:Python,操作,Jira,库
0
投稿

猜你喜欢

  • ASP+Access系统的安全隐患及对策

    2007-08-23 14:53:00
  • Python实现分数序列求和

    2023-10-07 12:44:54
  • Python面向对象编程之类的继承

    2021-10-27 23:46:39
  • VB应用程序访问SQL Server的常用方法

    2009-01-21 14:28:00
  • python 创建一个空dataframe 然后添加行数据的实例

    2022-05-08 01:51:59
  • element-plus中如何实现按需导入与全局导入

    2024-05-02 17:04:21
  • Python应用实现双指数函数及拟合代码实例

    2023-04-14 18:17:14
  • python3 常见解密加密算法实例分析【base64、MD5等】

    2023-06-05 01:03:42
  • Windows下mysql 8.0.12 安装详细教程

    2024-01-23 23:52:36
  • php中运用http调用的GET和POST方法示例

    2023-11-23 02:39:35
  • python数据类型判断type与isinstance的区别实例解析

    2022-07-05 03:25:50
  • Go语言操作Excel利器之excelize类库详解

    2024-04-28 09:12:47
  • Python yield的使用详解

    2021-07-17 22:23:29
  • Python K最近邻从原理到实现的方法

    2022-10-13 09:41:45
  • python中字符串的操作方法大全

    2023-10-01 17:47:15
  • Python如何使用qrcode生成指定内容的二维码并在GUI界面显示

    2022-06-29 21:41:26
  • Django Channels 实现点对点实时聊天和消息推送功能

    2022-04-03 10:37:56
  • Python 中 sorted 如何自定义比较逻辑

    2021-09-16 23:43:37
  • Python Pygame制作雪夜烟花景

    2023-10-21 08:57:07
  • 浅谈MySQL存储引擎选择 InnoDB还是MyISAM

    2009-05-10 20:02:00
  • asp之家 网络编程 m.aspxhome.com