Python操作Jira库常用方法解析


Posted in Python onApril 10, 2020

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过exifread模块获得图片exif信息的方法
Mar 16 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
python list是否包含另一个list所有元素的实例
May 04 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
Python基于traceback模块获取异常信息
Jul 23 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
django使用graphql的实例
Sep 02 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
通过Python把学姐照片做成拼图游戏
Feb 15 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 #Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 #Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 #Python
调整Jupyter notebook的启动目录操作
Apr 10 #Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 #Python
jupyter 实现notebook中显示完整的行和列
Apr 09 #Python
jupyter notebook 多行输出实例
Apr 09 #Python
You might like
一个程序下载的管理程序(三)
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
悦木之源美国官网:Origins美国
2016/08/01 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
初一家长会邀请函
2014/01/31 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书