小言_互联网的博客

Python对jira的调用。完全自动化处理

522人阅读  评论(0)

1:首先要知道基本属性

# -*- coding:utf-8 -*-
import datetime

from jira import JIRA
jira_ip="127.0.0.1"
jira_user='ceshi1'
jira_passwd="1"
port=8080
jr = JIRA('http://'+jira_ip+':8080/', auth=(jira_user, jira_passwd))#登录
all_bug=jr.search_issues("project = 'JD'")#jql语法,查询项目为JD下面的所有缺陷
for i in all_bug:#项目下缺陷清单名称和id
    print(i,i.id)#缺陷名称,缺陷所对应的ID
    isss = jr.issue(i.id)
    print("缺陷类型:{0}".format(isss.fields.issuetype))#打印缺陷的类型
    print("标题内容:{0}".format(isss.fields.summary))#打印缺陷的主题即标题内容
    print("缺陷描述:{0}".format(isss.fields.description))#打印缺陷的描述即具体内容
    print("缺陷状态:{0}".format(isss.fields.status))#打印缺陷的当前状态,如:已解决,关闭
    print("缺陷解决结果:{0}".format(isss.fields.resolution)) #打印缺陷的解决结果
    print("缺陷级别:{0}".format(isss.fields. priority))#打印缺陷的优先级,如:严重,重要,轻微等
    print("缺陷创建者:{0}".format(isss.fields. reporter))#打印缺陷的创建人名称
    print("缺陷指派人:{0}".format(isss.fields. assignee))#打印缺陷的指派人名称
    print("缺陷创建日期:{0}".format(isss.fields. created))#打印缺陷的创建日期
    print("缺陷修改日期:{0}".format(isss.fields.updated))#打印缺陷的修改日期
    print("缺陷的标签:{0}".format(isss.fields.labels))  # 打印缺陷的标签
    print('%s'%isss.fields.comment.comments)#打印缺陷的备注信息
    print(isss.fields.attachment)#打印缺陷的附件信息
    print('%s'%isss.fields.components)#打印缺陷的所属模块信息
    print("缺陷环境信息:{0}".format(isss.fields.environment))#打印缺陷的环境信息
    print(isss.fields.attachment)

2:创建项目:(管理员权限)

a = [i.key for i in jr.projects()]#获取jira下所有的所有项目
projkey=str.upper(“项目名称”)#由于项目的Key都是大写
if str.upper(“项目名称”) in a:#如果项目存在就跳过
    pass
else:#不存在就创建
    jr.create_project(projkey,  type="Business",)
    #jr.create_component(Component, projkey)
    #version=db+str(0.1)
    #jr.create_version(version, projkey, description="", releaseDate="2020-12-12", startDate="2020-11-11")# 第一个参数版本名称 第二个参数KEY 最后三个参数分别是 “描述”	Start date	Release date

3:提交bug并上传附件:

pj_id=jr.project("JD").id#项目所对用的ID
issue_dict = {
   
    'project': {
   'id': pj_id},  # 项目id
    'summary': "summary",  # BUG概要
    'description': "description",  # BUG详情
    'priority': {
   'name': 'High'},  # bug优先级
    'assignee': {
   'name': "分配给谁"},  # 分配人
    'labels': ["ce"],  # 所属项目标签
    'issuetype': {
   'id': 10002}  # 问题类型-任务#不同版本数字对应不一样有的10004,10001
}
iss=jr.create_issue(issue_dict)
jr.add_attachment(issue=iss, attachment="文件路径", filename="文件名")
print("bug 提交成功")

4:关闭bug

利用jql语法查询需要关闭的缺陷。
查找项目名称为JD,标题包含数据,状态不为完成,标签为test的数据。
issue = jr.search_issues("project = 'JD' and  summary ~ '数据' and status !='DONE' and labels='test'" 
if issue:#存在未关闭的
    for i in issue:
        print(i, i.id)
        jr.transition_issue(i.id, transition='41')  # 11待办,21处理中,31完成
        print("关闭bug成功")

5:重新打开bug,并上传附件

issue = jr.search_issues("project = 'JD' and  summary ~ '数据' and status ='DONE' and labels='test'" 
if issue2:#存在已关闭需要重新打开。
    for i in issue2:
        print(i, i.id)
        jr.transition_issue(i.id, transition='11')  # 11待办,21处理中,31完成
        id = [i.key for i in issue2]
        issue = jr.issue(id[0])
        jr.add_attachment(issue=issue, attachment=file_dir, attachment="文件路径", filename="文件名")  # 更新附件信息
        print("重新打开bug成功,上传附件成功")

6:jira JQL语法:#参考别人的

搜索需求 JQL语句
分配给我的待处理任务 assignee = currentUser() AND resolution is EMPTY
我报告的并且没处理完成的任务 reporter = currentUser() AND resolution is EMPTY
某项目中已经过期的任务 project = “XXX” AND due < now()
某项目中3天后要过期的任务 project = “XXX” AND due <= endOfDay(3d)
某项目中待办和处理中状态上的任务 project = “XXX” AND status in (待办, 处理中)
某项目中48小时内没变化过的任务 project = “XXX” AND updated <= -48h ORDER BY updated DESC
某项目中没上传附件的Bug project = “XXX” and type= Bug and attachments is EMPTY
某项目中测试组用户处理完成的任务 project = “XXX” and assignee in membersOf(“testers”) and status = 已完成
某项目中最近30天解决的任务 project = “XXX” and resolved >= startOfDay(-30d)
某项目上即将发布的版本中还没解决的任务 project = “XXX” and fixVersion = earliestUnreleasedVersion() and resolution is EMPTY
某项目中重新打开的Bug project = “XXX” and type = Bug and resolution changed from fixed to empty
某项目中标题包含“服务器异常”的Bug project = “XXX” and type = Bug and summary ~ “服务器异常”
某项目上当前进行的Sprint中被标记的任务 project = “XXX” and Sprint in openSprints() and Flagged = Impediment
昨天我将状态从待办改为处理中的任务 status changed FROM 待办 TO 处理中 BY currentUser() AFTER startOfDay(-1d)
用户User1在2019年修改过的Issue issue in updatedBy(User1, 2019-1-1, 2019-12-31)
某项目中已发布版本中包含的任务 project = “XXX” and fixVersion in releasedVersions()
上周发生状态变化的Issue status changed DURING (startOfWeek(-1), endOfWeek(-1))
以"is duplicated by"关系链接到某个Issue的任务 issue in linkedIssues(PRO-1,“is duplicated by”)

转载:https://blog.csdn.net/qq_34237321/article/details/109746532
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场