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登录QQ邮箱发信的实现代码
Feb 10 Python
python判断、获取一张图片主色调的2个实例
Apr 10 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
使用requests库制作Python爬虫
Mar 25 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python数据库小程序源代码
Sep 15 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
python 读取.nii格式图像实例
Jul 01 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
python上下文管理的使用场景实例讲解
Mar 03 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 一个比较完善的简单文件上传
2010/03/25 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS打印组合功能
2016/08/04 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
React组件的三种写法总结
2017/01/12 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
分享6个隐藏的python功能
2017/12/07 Python
简单了解python代码优化小技巧
2019/07/08 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
计算机学生求职信范文
2014/01/30 职场文书
更夫岗位责任制
2014/02/11 职场文书
教师党员承诺书
2014/03/25 职场文书
党委班子对照检查材料
2014/08/19 职场文书
新兵入伍心得体会
2014/09/04 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
交通事故和解协议书
2015/01/27 职场文书
化工生产实习心得体会
2016/01/22 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
Python编写冷笑话生成器
2022/04/20 Python
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL