Python操作Jira库常用方法解析

Uma ·
更新时间:2024-09-20
· 933 次阅读

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)

您可能感兴趣的文章:在Docker中部署Confluence和jira-software的方法步骤Jira7.10.1在Windows环境下的安装和配置教程图解Python使用扩展库pywin32实现批量文档打印实例python 安装库几种方法之cmd,anaconda,pycharm详解详解Python中pyautogui库的最全使用方法python使用pyecharts库画地图数据可视化的实现Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息关于Python turtle库使用时坐标的确定方法



jira 方法 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号