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中的jquery PyQuery库使用小结
May 13 Python
Python多线程编程简单介绍
Apr 13 Python
Python中常见的数据类型小结
Aug 29 Python
Python进程间通信Queue实例解析
Jan 25 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
Python从零开始创建区块链
Mar 06 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
自学python用什么系统好
Jun 23 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
PHP常见漏洞攻击分析
2016/02/21 PHP
php PDO异常处理详解
2016/11/20 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python删除字符串中指定字符的方法
2018/08/13 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python新手学习可变和不可变对象
2020/06/11 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
物流仓管员工作职责
2014/01/06 职场文书
个人授权委托书范本
2014/09/14 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
党员证明模板
2015/06/19 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js