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调用zxing库生成二维码图片详解
Jan 10 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
详解python中的time和datetime的常用方法
Jul 08 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
关于sys.stdout和print的区别详解
Dec 05 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
pycharm sciview的图片另存为操作
Jun 01 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 Python
Elasticsearch 批量操作
Apr 19 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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
JS中数据结构之栈
2019/01/01 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Django与遗留的数据库整合的方法指南
2015/07/24 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python实现飞船大战
2020/04/24 Python
python调用私有属性的方法总结
2020/07/24 Python
python 带时区的日期格式化操作
2020/10/23 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
双十佳事迹材料
2014/01/29 职场文书
致800米运动员广播稿
2014/02/16 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
会议欢迎标语
2014/06/30 职场文书
故意杀人罪辩护词
2015/05/21 职场文书