JQL语法及Python查询 Jira issue信息

本文详细介绍了JIRA中的JQL语法、常用的搜索语句以及如何使用PythonJira库查询和管理issue信息,包括安装JIRA依赖库、登录认证、项目和issue查询,以及利用JQL搜索特定条件的issue。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 某项目中没上传附件的Bug project = “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 某项目中重新打开的Bug project = “XXX” and type = Bug and resolution changed from fixed to empty
12 某项目中标题包含“服务器异常”的Bug project = “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年修改过的Issue issue in updatedBy(User1, 2019-1-1, 2019-12-31)
16 某项目中已发布版本中包含的任务 project = “XXX” and fixVersion in releasedVersions()
17 上周发生状态变化的Issue status changed DURING (startOfWeek(-1), endOfWeek(-1))
18 以"is duplicated by"关系链接到某个Issue的任务 issue in linkedIssues(PRO-1,“is duplicated by”)
19 3天以来关闭的Issue status = 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(
### JIRA 搜索功能概述 JIRA 提供强大的搜索能力来帮助用户快速定位所需的信息。通过将 Jira 内容索引到 Elasticsearch 中可以创建统一的数据源并使用文档级别安全性进行搜索[^1]。 #### 基础搜索语法 JIRA 支持多种查询条件组合,允许使用者基于项目、问题类型、状态等多种属性筛选目标数据。基本的搜索语句由字段名称加上运算符以及期望匹配的内容构成。例如 `project = "MyProject"` 表示只返回属于 MyProject 项目的条目;`status != Closed` 则表示排除已关闭的状态之外的所有工单。 #### 高级搜索特性 除了简单的关键词匹配外,还支持更复杂的逻辑表达式如 AND, OR 和 NOT 来构建多条件过滤器。此外,还可以利用通配符(*) 进行模糊查找或是范围限定(> ,< ,>=,< =)。对于日期类型的字段,则可以通过相对时间概念简化输入方式,像 last week 或 next month 等自然语言描述。 #### 结果展示与导出 完成一次有效的检索后,系统将以列表形式呈现符合条件的结果集,默认按照最近更新排序。用户可以选择不同的视图模式查看细节信息,并能进一步调整列布局适应个人偏好。更重要的是,所有经过处理过的报告都可以方便地保存成 PDF 文件或者 CSV 数据表格用于离线分析。 ```python import requests def search_jira_issues(jql_query): url = 'https://your-domain.atlassian.net/rest/api/3/search' headers = { 'Authorization': 'Bearer YOUR_API_TOKEN', 'Content-Type': 'application/json' } params = {'jql': jql_query} response = requests.get(url, headers=headers, params=params) if response.status_code == 200: issues = response.json().get('issues', []) for issue in issues: print(f"{issue['key']}: {issue['fields']['summary']}") else: print("Failed to retrieve data") search_jira_issues("project=TEST AND status=open") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值