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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
python psutil库安装教程
Mar 19 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python 爬虫请求模块requests详解
Dec 04 Python
python 写一个水果忍者游戏
Jan 13 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
Python关于OS文件目录处理的实例分享
May 23 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
php compact 通过变量创建数组
2016/11/15 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
利用JS实现数字增长
2016/07/28 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
django 简单实现登录验证给你
2019/11/06 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
软件项目实施计划书
2014/05/02 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python