JQL语法及Python查询 Jira issue信息

news2024/11/27 0:42:04

文章目录

    • 一、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 JIRA

jira = JIRA('https://jira.xxx.xxx', basic_auth=('username', 'password'))
# 查询project信息
print(jira.projects())  #获取所有的projets

project = 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 JIRA

jira = 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 JIRA

jira = 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.coloradmin.cn/o/1433211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker-compose部署laravel项目实战(主机nginx连接项目容器)(详细配置过程)

我用的是主机上的nginx,没有用docker安装nginx&#xff0c; 所以需要先在主机上安装nginx # 更新系统yum sudo yum update# 安装安装包sudo yum install epel-release sudo yum install wget# 安装Nginx sudo yum install nginx #启动 sudo systemctl start nginx #开机自启动…

leetcode (算法)66.加一(python版)

需求 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1&#xff1a; 输入&#xff1a;digi…

Mocaverse NFT 概览与数据分析

作者&#xff1a;stellafootprint.network 编译&#xff1a;mingfootprint.network 数据源&#xff1a;Mocaverse NFT Collection Dashboard Mocaverse 是 Animoca Brands 推出的专属 NFT&#xff08;非同质化代币&#xff09;系列&#xff0c;包含 8,888 个独特的 "M…

搜索专项---Flood Fill

文章目录 池塘计数城堡问题山峰与山谷 一、池塘计数OJ链接 1.BFS做法 #include <bits/stdc.h>#define x first #define y secondtypedef std::pair<int,int> PII;constexpr int N1010;int n,m; char g[N][N]; bool st[N][N];//用来表示已经记录过的 std::queue&…

matlab使用jdbc连接数据库

1、打包jdbc 2、在matlab安装目录下&#xff0c;进去toolbox目录下&#xff0c;新建一个对应放jdbc包的文件夹&#xff0c;加入放入的是mysql的jdbc驱动包&#xff0c;就新建一个mysql目录&#xff0c;将驱动包放入mysql目录下 3、在toolbox目录下&#xff0c;找到local目录&a…

李沐《动手学深度学习》循环神经网络 经典网络模型

系列文章 李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 李沐《动手学深度学习》线性神经网络 线性回归 李沐《动手学深度学习》线性神经网络 softmax回归 李沐《动手学深度学习》多层感知机 模型概念和代码实现 李沐《…

Linux进程信号(2)--信号的保存

目录 1.阻塞信号 1.1 信号其他相关常见概念 1.实际执行信号的处理动作称为信号递达(Delivery&#xff09; 2.信号从产生到递达之间的状态,称为信号未决(Pending)。 3.进程可以选择阻塞 (Block )某个信号。 1.2信号在内核中的表示 sigset_t 信号集操作函数 使用sigprocm…

ReactNative实现弧形拖动条

我们直接看效果 先看下面的使用代码 <CircularSlider5step{2}min{0}max{100}radius{100}value{30}onComplete{(changeValue: number) > this.handleEmailSbp(changeValue)}onChange{(changeValue: number) > this.handleEmailDpd(changeValue)}contentContainerStyle{…

MicroPython ESP32开发:通过寄存器直接访问外围设备

可以通过直接读写寄存器来控制 ESP32 的外设。这就需要阅读数据手册&#xff0c;了解要使用哪些寄存器以及要写入哪些值。下面的示例展示了如何打开和更改 MCPWM0 外设的预分频器。 from micropython import const from machine import mem32# Define the register addresses …

SpringBoot中数据库的连接及Mybatis的配置和使用

目录 1 在pom.xml中引入相关依赖 2 对数据库进行配置 2.1 配置application.yml 2.2 idea连接数据库 (3.2.1有用到) 3 Mybatis的使用 3.1 测试文件的引入 3.2 使用 3.2.1 使用注解(有小技巧(✪ω✪)) 3.2.2 使用动态sql 1 在pom.xml中引入相关依赖 <dependencies&g…

单片机学习笔记---按键控制LED流水灯模式定时器时钟

目录 代码讲解 初始化函数 1.定时器部分的配置步骤 第一步&#xff0c;对TMOD的赋值 第二步&#xff0c;给TF0赋值 第三步&#xff0c;给TR0赋值开启定时器 第四步&#xff0c;给TL0和TH0赋初值 2.中断系统部分的配置步骤 第一步&#xff0c;给ET0赋值 第二步&#x…

docker下,容器无法启动,要删除里面的文件

第一步&#xff1a;进入docker cd /var/lib/docker 第二步&#xff1a;查找&#xff0c;我这里是拼音分词器 find ./ -name py 第三步&#xff1a;得到路径 第四步&#xff1a;删除或复制或移动&#xff0c;我这里是删除py文件夹 rm -rf ./over那一串 第五步&#xff1a;想干…

【日常总结】SourceTree 1.5.2.0 更换用户名称和密码

一、场景 二、问题 三、解决方案 > 方案一&#xff1a;删除缓存文件 > 方案二&#xff1a;更新最新版本&#xff0c;可以直接修改密码&#xff08;推荐&#xff09; 方案一&#xff1a;删除缓存文件 Stage 1&#xff1a;设置显示隐藏文件 Stage 2&#xff1a;打开…

minitouch王者荣耀按键百分比

minitouch王者荣耀按键百分比 3 技能英雄 原图 2376 x 1104 xy说明x百分比y百分比23761104总分辨率160444金币0.0673400673400670.402173913043478296440物品10.1245791245791250.398550724637681296566物品20.1245791245791250.51268115942029470864摇杆0.1978114478114480…

【Docker进阶】镜像制作-用快照制作Docker镜像

进阶一 docker镜像制作 文章目录 进阶一 docker镜像制作1. 镜像制作及原因2. Docker镜像制作的方式3. 快照制作镜像 1. 镜像制作及原因 镜像制作是因为某种需求&#xff0c;官方的镜像无法满足需求&#xff0c;需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往有…

Stable Diffusion 模型下载:国风4 GuoFeng4 XL

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 欢迎使用GuoFeng4模型 - 这是一个微调后的全能的SDXL模型,也可以说是对国人喜欢的画风微调过的模型,具有2.5D,CG,游戏,建模质感。基于SDXL1.0训练。因为SDXL的升…

2024最新版鸿蒙HarmonyOS开发工具安装使用指南

2024最新版鸿蒙HarmonyOS开发工具安装使用指南 By JacksonML 0. 什么是鸿蒙Harmony OS&#xff1f; 华为鸿蒙系统&#xff08;HUAWEI Harmony OS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分…

CAN通信----(创芯科技)CAN分析仪----转CANTest使用

点击进入官方链接进行下载创芯科技 CAN分析仪资料包&#xff1a; 创芯科技的官网&#xff1a;https://m.zhcxgd.com/ 我使用的是至尊版红色带OBD转接头的&#xff1a; 所有下图是我选择…

antv/x6 边添加鼠标悬浮高亮和删除功能

antv/x6 边添加鼠标悬浮高亮和删除功能 效果添加悬浮效果和删除工具取消悬浮效果边删除后的回调函数 效果 添加悬浮效果和删除工具 this.graph.on(edge:mouseenter, ({ cell }) > {let cellId cell.store.data.source.celllet sourceCell _this.graph.getCellById(cellId…

【高质量精品】2024美赛A题22页word版成品论文+数据+多版本前三问代码及代码讲解+前四问思路模型等(后续会更新)

一定要点击文末的卡片&#xff0c;进入后&#xff0c;即可获取完整资料后续参考论文!! 整体分析:这个题目是一个典型的生态系统建模问题&#xff0c;涉及到动物种群的性比例变化、资源可用性、环境因素、生态系统相互作用等多个方面。这个题目的难点在于如何建立一个合理的数学…