Python操作jira
【摘要】 Python 操作 jira
安装
pip install jira
登录
from jira import JIRA
#登录 可以使用cookie进行oauth登录
jira = JIRA(地址, basic_auth=(用户名, 密码))
# 获取此服务器的可变应用程序属性(需要支支系统管理员权限)
props = jira.application_properties()
查询
from collections import Counter
# 找到报告人为admin的所有问题
issues = jira.search_issues('assignee=admin')
#在报告人为管理员的报告中,问题最多的三个项目
top_three = Counter(
[issue.fields.project.key for issue in issues]).most_common(3)
#获取当前用户及所有项目
print(jira.user(jira.current_user()))#当前用户
for i in jira.projects():
print(i.name)#项目名
#获取指定的issue
myissue = ira.issue('EN-1');
summary = myissue.fields.summary;#主题
print(myissue, summary)
#获取issue为CMDB-15的issue
issue = jira.issue('CMDB-15')
#打印CMDB-15的issue的所有comment
print(i.body)
#任务名称
print(issue.__dict__['key']) #任务名称
#问题状态(opened,fixed,progressing, 关闭(close))
print(issue.fields.status)
#任务类型(Bug,Task, Epic, Story)
print(issue.fields.issuetype)
#打印这个问题的名子
print(issue.fields.summary)
#打印这个问题的任务下的comment问题总数
#获取用户为zongyang.yu的issuce
messages = jira.search_issues('assignee=zongyang.yu') #是个iterable
#打印第0个issue的id
print(messages[0].id)
#打印第0个issue的key(这个就是issue的号,比如DEV-01)
print(messages[0].key)
#打印第0个的issue的项目名字
#打印第0个issue的任务状态(opened,fixed,progressing, 关闭(close))
print(messages[0].fields.status)
#打印第0个issue的任务类型(Bug,Task, Epic, Story)
print(messages[0].fields.issuetype)
#获取issue的name
print(messages[0].fields.summary)
#获取邮箱为zongyang.yu的issue
comments = [comment for comment in issue.fields.comment.comments if re.search(r'zongyang.yu', comment.author.emailAddress)]
#问题id
print(comments[0])
#问题内容
print(comments[0].__dict__['body'])
#问题作者
print(comments[0].__dict__['author'])
#问题描述
print(comments[0].fields.description)
#问题跟踪者
print(comments[0].fields.reporter)
#问题创建者
print(comments[0].fields.creator)
#添加comment
jira.add_comment(issue, 'Comment text')
#查看json格式的raw
print(comments.fields.project.raw)
#搜索
issues_in_proj = jira.search_issues('project=PROJ')
all_proj_issues_but_mine = jira.search_issues('project=PROJ and assignee != currentUser()')
# 按优先次序排列,我本周末要交的5大问题
oh_crap = jira.search_issues('assignee = currentUser() and due < endOfWeek() order by priority desc', maxResults=5)
# 我最近报告的3个问题的摘要
for issue in jira.search_issues('reporter = currentUser() order by created desc', maxResults=3):
print('{}: {}'.format(issue.key, issue.fields.summary))
创建
#1
issueadd= {
'project': {'id': '10316'},
'issuetype': {'id': '10601'},
'summary': 'test1010',
'customfield_11004': {'id': '11108'},
'customfield_11008': {'id': '11117'},
'customfield_10413': {'id': '10317'},
'reporter': {'name': 'yaowanjun','key': 'yaowanjun'},
'description': 'test\n1、test1\n2、test2',
}
newissue = ira.create_issue(issueadd)
print(newissue)
#2
new_issue = jira.create_issue(
project='PROJ_key_or_id',
summary='New issue from jira-python',
description='Look into this one', issuetype={'name': 'Bug'})
#3 创建多个
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)
修改
修改描述及summary
myissue = jira.issue('EN-5283')
issueupdate = {
'summary': 'test1011',
'description': '测试步骤\n步骤1\n步骤2\n实际结果\n期望结果',
}
myissue.update(issueupdate)
print(myissue.fields.summary)
print(myissue.fields.description)
#修改用户
issue.update(summary='new summary', description='A new summary was added')
issue.update(assignee={'name': 'new_user'})
#不进行真实修改
issue.update(notify=False, description='A quiet description change was made')
删除
myissue = jira.issue('EN-5283')
myissue.delete()
components
#查询components,需要传入project
components = jira.project_components(project)
for i in components:
#修改components, issue必须为找到,并且fault_component为list,前提必须已经存在的component
issue.update(fields={"components": fault_component})
#创建components
jira.create_component(project=project, name="OS")
watcher
#添加watcher
jira.add_watcher(new_issue_task, i)
#删除watcher
jira.remove_watcher(new_issue_task, i)
工单状态
#查看工单的状态
transitions = self.jira.jira.transitions(issue)
response = [(t['id'], t['name']) for t in transitions]
更改工单的状态
self.jira.jira.transition_issue(issue_instance, transition=flag)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)