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的Django框架中的QuerySets
Apr 20 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
Python常见数字运算操作实例小结
Mar 22 Python
Python安装与基本数据类型教程详解
May 29 Python
Python音频操作工具PyAudio上手教程详解
Jun 26 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python re模块和正则表达式
Mar 24 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
python写xml文件的操作实例
2014/10/05 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
解决Mac下使用python的坑
2019/08/13 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
python处理写入数据代码讲解
2020/10/22 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
热能动力工程毕业生自荐信
2013/11/07 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
学校工作推荐信范文
2014/07/11 职场文书
《日月潭》教学反思
2016/02/20 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android