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类定义的讲解
Nov 01 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
Python栈类实例分析
Jun 15 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
浅谈Python处理PDF的方法
Nov 10 Python
Python 查看文件的编码格式方法
Dec 21 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python如何实现单链表的反转
Feb 10 Python
Python如何将字符串转换为日期
Jul 31 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 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中的integer类型使用分析
2010/07/27 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
基于php判断客户端类型
2016/10/14 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
python读取excel表格生成erlang数据
2017/08/26 Python
python pandas库的安装和创建
2019/01/10 Python
Python提取频域特征知识点浅析
2019/03/04 Python
Python如何对XML 解析
2020/06/28 Python
python 常见的反爬虫策略
2020/09/27 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
综合办公室主任岗位职责
2014/04/13 职场文书
三方协议书范本
2014/04/22 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript
js前端图片加载异常兜底方案
2022/06/21 Javascript