Python操作Jira库常用方法解析
Jira提供了完善的RESTfulAPI,如果不想直接请求API接口可以使用Python的Jira库来操作Jira
JiraPython文档
安装方法
pipinstalljira
认证
Jira的访问是有权限的,在访问Jira项目时首先要进行认证,JiraPython库提供了3种认证方式:
- 通过Cookis方式认证(用户名,密码)
- 通过BasicAuth方式认证(用户名,密码)
- 通过OAuth方式认证
认证方式只需要选择一种即可,以下代码为使用Cookies方式认证。
formjiraimportJIRA
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,'newcomment')#新增评论 comment.update(body='updatecomment')#更新评论 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':'Newissuefromjira-python', 'description':'Lookintothisone', 'issuetype':{'name':'Bug'}, } new_issue=jira.create_issue(fields=issue_dict) #批量创建问题 issue_list=[ { 'project':{'id':123}, 'summary':'Firstissueofmany', 'description':'Lookintothisone', 'issuetype':{'name':'Bug'}, }, { 'project':{'key':'FOO'}, 'summary':'Secondissue', 'description':'Anotherone', 'issuetype':{'name':'Bug'}, }, { 'project':{'name':'Bar'}, 'summary':'Lastissue', 'description':'Finalissueofbatch.', '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(JiraQueryLanguage),Jira的Python库便是基于JQL语法进行搜索的,返回的是搜索到的问题列表。
使用语句为
jira.search_issues('JQL语句')
默认最大结果数未1000,可以通过maxResults参数配置,该参数为-1时不限制数量,返回所有搜索结果。
jira.search_issues('project=PROJandassignee=currentUser()',maxResults=-1)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。