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之玩转字符串(2)
Sep 14 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python实现的文本编辑器功能示例
Jun 30 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Django框架中模型的用法
Jun 10 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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python深入学习之装饰器
2014/08/31 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
使用npy转image图像并保存的实例
2020/07/01 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
天猫精选:上天猫,就够了
2016/09/21 全球购物
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
strstr()的简单实现
2013/09/26 面试题
平面设计师的工作职责
2013/11/21 职场文书
学党史心得体会
2014/09/05 职场文书
法定代表人资格证明书
2014/09/11 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
父亲去世追悼词
2015/06/23 职场文书
奖学金主要事迹范文
2015/11/04 职场文书