JQL语法及Python查询 Jira issue信息

文章目录

    • 一、JQL语法
      • 1.1 JQL语法简介
      • 1.2 Jira中常用的JQL搜索语句
    • 二、查询issue信息
      • 2.1 安装JIRA依赖库
      • 2.2 登录JIRA
      • 2.3 查询JIRA的project信息
      • 2.4 查询JIRA的issue信息
      • 2.5 搜索Jira issue

一、JQL语法

1.1 JQL语法简介

JIRA 的 JQL 语法由以下几个元素组成:

  • field (字段) : 就是要搜索的JIRA Issue 的各个字段
  • operator(运算符或者也叫操作符):如 =, < , > , in 等
  • value(值):具体要查询的字段匹配的值
  • keyword(关键字): keyword这个字面上理解可能会带来些歧义, 主要有以下作用
    (1)连接两个表达式,即通常我们所说的逻辑运算符:AND, OR, NOT
    (2)排序运算符:ORDERBY
    (3)还有一部分就是表示空的关键字: NULL 和 EMPTY,这两个貌似才是通常意义上的关键字
  • function(方法):即JIRA提供的一些方法,如 now()表示当前时间,currentUser()表示当前用户等

语法示例如下:
在这里插入图片描述
其中field可用接口中获取:
在这里插入图片描述

1.2 Jira中常用的JQL搜索语句

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

二、查询issue信息

2.1 安装JIRA依赖库

pip3 install jira

2.2 登录JIRA

JIRA都有访问限制,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式:

  • 通过Cookis方式认证(用户名,密码)
  • 通过Basic Auth方式认证(用户名,密码)
  • 通过OAuth方式认证
from jira import JIRA
# 通过jira域名和账户密码登录
jira = JIRA('https://jira.xxx.xxx/', basic_auth=('username', 'password'))

创建JIRA对象需要server处传入公司JIRA服务器的IP,basic_auth里传入登入用户名和密码

2.3 查询JIRA的project信息

from jira import JIRAjira = JIRA('https://jira.xxx.xxx', basic_auth=('username', 'password'))
# 查询project信息
print(jira.projects())  #获取所有的projetsproject = jira.project('KKQA') #获取projet为KKQA的信息
print(project.key)             # 获取项目key
print(project.name)            # 获取项目名称
print(project.lead)            # 获取项目负责人
print(project.description)     # 项目描述
print(project.components)      # 获取项目组件
print(project.raw)             # 获取项目的原始API数据

2.4 查询JIRA的issue信息

可以查询到信息有:

  • 所属项目
  • 问题类型和状态
  • 标题和描述
  • 干系人
  • 时间点
  • 附件和评论等
from jira import JIRAjira = JIRA('https://jira.xxx.xxx', basic_auth=('username', 'password'))
issue = jira.issue('KKQA-57857')
print(issue)                # jiraID
print(issue.id)             # internalID
print(issue.fields.project) # 所属项目
print('-----------------------------------')print(issue.fields.issuetype)    # 问题类型
print(issue.fields.status)       # 问题状态
print(issue.fields.timetracking) # 时间跟踪
print(issue.fields.issuelinks)   # 链接的问题
print('-----------------------------------')print(issue.fields.creator)           # 创建人
print(issue.fields.reporter)          # 报告人
print(issue.fields.assignee)          # 经办人
print(issue.fields.customfield_10202) # 缺陷类型(自定义字段)
print(issue.fields.labels)            # 标签
print(issue.fields.created)           # 创建时间
print(issue.fields.updated)           # 修改时间
print(issue.fields.lastViewed)        # 最后查看时间
print(issue.fields.summary)           # 主题
print(issue.fields.description)       # 描述
print(issue.fields.attachment)        # 附件
print(issue.fields.comment.comments)  # 备注
print('-----------------------------------')print(issue.fields.issuetype.avatarId) # 类型ID
print(issue.fields.components)         # 模块
print(issue.fields.priority)           # 优先级
print(issue.fields.versions)           # 影响版本
print(issue.fields.fixVersions)        # 解决版本
print(issue.fields.resolution)         # 解决结果
print(issue.fields.resolutiondate)     # 解决时间
print(issue.fields.environment)        # 环境

2.5 搜索Jira issue

Jira有一套专门的搜索语言,称为JQL(Jira Query Language),Jira的Python库便是基于JQL语法进行搜索的,返回的是搜索到的问题列表。使用语句为:

jira.search_issues('JQL语句')

默认最大结果数为1000,可以通过maxResults参数配置,参数为-1时不限制数量,返回所有搜索结果。

from jira import JIRAjira = JIRA('https://jira.xxx.xxx', basic_auth=('username', 'password'))
jql = 'status in (等待修复, 修复中, 自测中) AND affectedVersion = A7.60.0'
issues = jira.search_issues(jql, 0, 9999, 1, '', '', '')
print(issues)
for issue in issues:print(f'经办人: {issue.fields.assignee}, {issue.fields.summary}')

参考文档:
https://doc.devpod.cn/jira/jql-3244098.html
https://blog.csdn.net/alice_tl/article/details/101784046

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/451461.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql】整理

Mysql整理与总结 整理Mysql的基本内容供回顾。 参考&#xff1a; [1]. 掘金.MySQL三大日志(binlog,redolog,undolog)详解 [2]. Javaguide.MySQL三大日志(binlog、redo log和undo log)详解

ReactNative实现一个圆环进度条

我们直接看效果,如下图 我们在直接上代码 /*** 圆形进度条*/ import React, {useState, useEffect} from react; import Svg, {Circle,G,LinearGradient,Stop,Defs,Text, } from react-native-svg; import {View, StyleSheet} from react-native;// 渐变色 const CircleProgr…

Oracle 面试题 | 09.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

VMware虚拟机安装统信uos桌面专业版操作系统系统

统信uos桌面版版本对比:https://www.uniontech.com/next/product/desktop-contrast专业版只要是面向政企等单位,这里只是用虚拟机安装测试基本功能使用,对于我们个人要长期使用的话可以使用家庭版或者社区版 1镜像下载 1.1打开官网 镜像在统信生态社区下载统信生态社区官网:…

新书速览|Kubernetes从入门到DevOps企业应用实战

从0到1&#xff0c;从零开始全面精通Kubernetes&#xff0c;助力企业DevOps应用实践 本书内容 《Kubernetes从入门到DevOps企业应用实战》以实战为主&#xff0c;内容涵盖容器技术、Kubernetes核心资源以及基于Kubernetes的企业级实践。从容器基础知识开始&#xff0c;由浅入深…

CTF赛三层内网渗透

CTF赛三层内网渗透 前言 2019某CTF线下赛真题内网结合WEB攻防题库&#xff0c;涉及WEB攻击&#xff0c;内网代理路由等技术&#xff0c;每台服务器存在Flag&#xff0c;获取一个Flag对应一个积分&#xff0c;获取三个Flag结束。 第一关 Taget1_centos7 1、访问目标网页 发现…

你必须知道的?Python自动化5个EDA库

EDA或探索性数据分析是一项耗时的工作&#xff0c;但是由于EDA是不可避免的&#xff0c;所以Python出现了很多自动化库来减少执行分析所需的时间。EDA的主要目标不是制作花哨的图形或创建彩色的图形&#xff0c;而是获得对数据集的理解&#xff0c;并获得对变量之间的分布和相关…

你今年过年回去吗?

#过年 我是一名21岁刚毕业的大学生&#xff0c;专业是软件技术&#xff0c;主修c#&#xff0c;之前在上海实习了一年&#xff0c;正式工作后来到了深圳&#xff0c;进入了一家电商公司实习。至于我为什么转行了&#xff0c;大家懂的都懂 现在是20240203晚上19.39&#xff0c;还…

springboot与springcloud之间的版本对应关系

https://start.spring.io/actuator/info 当然&#xff0c;你可以直接在&#xff1a; https://spring.io/projects/spring-cloud 上看文档查询&#xff0c; 不过&#xff0c;最后应该是调到这里的&#xff1a; https://github.com/spring-cloud/spring-cloud-release/wiki/Suppo…

你知道,哪类人需要关注自己的大数据信用吗?

在大数据时代&#xff0c;个人信用变得越来越重要&#xff0c;而大数据信用报告则是了解个人信用状况的重要途径之一。然而&#xff0c;不同的人需要关注自己的大数据信用程度也不同。那哪类人需要关注自己的大数据信用呢?本文带你一起去看看。 以下两类人需要特别关注自己的大…

是不是还在为写作发愁呢?为你推荐这几款ai写作神器

写作是许多人常常面临的挑战&#xff0c;但现在有了AI写作神器的出现&#xff0c;我们可以更轻松地应对写作任务。本文将为大家介绍国内6个好用的AI写作软件&#xff0c;详细说明它们的优点和使用特点&#xff0c;帮助你提升写作效率。 一、爱制作AI 爱制作AI是一款功能强大且…

寒假 day1

1、请简述栈区和堆区的区别? 2、有一个整形数组:int arr[](数组的值由外部输入决定)&#xff0c;一个整型变量: x(也 由外部输入决定)。要求: 1)删除数组中与x的值相等的元素 2)不得创建新的数组 3)最多只允许使用单层循环 4)无需考虑超出新数组长度后面的元素&#xff0c;所以…