查询JIRA问题Skill ListJIRAs

该技能用于通过JIRA REST API查询指定项目的bug数据,返回原始JSON格式的信息,便于后续数据处理和分析。适用于项目管理、自动化工作流构建等场景。关键词:JIRA查询,项目管理,bug跟踪,API调用,自动化脚本。

DevOps 0 次安装 0 次浏览 更新于 3/14/2026

名称: 列出JIRA问题 描述: 查询并返回特定项目的原始JIRA bug数据

列出JIRA问题

此技能提供查询指定项目的JIRA bug并返回原始问题数据的功能。它使用JIRA REST API获取完整的bug信息,包括所有字段和元数据,不进行任何摘要处理。

何时使用此技能

在需要以下情况时使用此技能:

  • 获取原始JIRA问题数据以供进一步处理
  • 访问完整问题详情,包括所有字段
  • 构建自定义分析工作流
  • 为其他命令(如summarize-jiras)提供数据
  • 导出JIRA数据供离线分析

前提条件

  1. Python 3 安装

    • 检查是否已安装:which python3
    • 需要Python 3.6或更高版本
    • 大多数系统预安装
  2. JIRA 认证

    • 需要设置环境变量:
      • JIRA_URL: JIRA实例的基础URL(例如,“https://issues.redhat.com”)
      • JIRA_PERSONAL_TOKEN: 您的JIRA承载令牌或个人访问令牌
    • 如何获取JIRA令牌:
      • 导航至JIRA → 个人资料 → 个人访问令牌
      • 生成具有适当权限的新令牌
      • 将其导出为环境变量
  3. 网络访问

    • 脚本需要网络访问以连接到您的JIRA实例
    • 确保可以向JIRA URL发送HTTPS请求

实施步骤

步骤 1: 验证前提条件

首先,确保Python 3可用:

python3 --version

如果未安装Python 3,根据用户平台指导安装。

步骤 2: 验证环境变量

检查是否设置了所需环境变量:

# 验证JIRA凭据已配置
echo "JIRA_URL: ${JIRA_URL}"
echo "JIRA_PERSONAL_TOKEN: ${JIRA_PERSONAL_TOKEN:+***设置***}"

如果缺少任何变量,指导用户设置:

export JIRA_URL="https://issues.redhat.com"
export JIRA_PERSONAL_TOKEN="your-token-here"

步骤 3: 定位脚本

脚本位于:

plugins/teams/skills/list-jiras/list_jiras.py

步骤 4: 运行脚本

执行脚本并添加适当参数:

# 基本用法 - 项目中的所有开放bug
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS

# 按组件过滤
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver"

# 按多个组件过滤
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver" "Management Console"

# 包括已关闭的bug
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --include-closed

# 按状态过滤
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --status New "In Progress"

# 设置最大结果限制(默认100)
python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --limit 500

步骤 5: 处理输出

脚本输出JSON数据,结构如下:

{
  "project": "OCPBUGS",
  "total_count": 1500,
  "fetched_count": 100,
  "query": "project = OCPBUGS AND (status != Closed OR (status = Closed AND resolved >= \"2025-10-11\"))",
  "filters": {
    "components": null,
    "statuses": null,
    "include_closed": false,
    "limit": 100
  },
  "issues": [
    {
      "key": "OCPBUGS-12345",
      "fields": {
        "summary": "Bug title here",
        "status": {
          "name": "New",
          "id": "1"
        },
        "priority": {
          "name": "Major",
          "id": "3"
        },
        "components": [
          {"name": "kube-apiserver", "id": "12345"}
        ],
        "assignee": {
          "displayName": "John Doe",
          "emailAddress": "jdoe@example.com"
        },
        "created": "2025-11-01T10:30:00.000+0000",
        "updated": "2025-11-05T14:20:00.000+0000",
        "resolutiondate": null,
        "versions": [
          {"name": "4.21"}
        ],
        "fixVersions": [
          {"name": "4.22"}
        ],
        "customfield_12319940": "4.22.0"
      }
    },
    ...more issues...
  ],
  "note": "Showing first 100 of 1500 total results. Increase --limit for more data."
}

字段描述

  • project:查询的JIRA项目
  • total_count:JIRA中匹配问题的总数(来自搜索结果)
  • fetched_count:实际获取的问题数(受–limit参数限制)
  • query:执行的JQL查询(包括最近关闭bug的过滤器)
  • filters:应用的过滤器(components、statuses、include_closed、limit)
  • issues:原始JIRA问题对象数组,每个包含:
    • key:问题键(如"OCPBUGS-12345")
    • fields:包含问题所有JIRA字段的对象:
      • summary:问题标题/摘要
      • status:包含名称和ID的状态对象
      • priority:包含名称和ID的优先级对象
      • components:组件对象数组
      • assignee:包含用户详情的分配对象
      • created:创建时间戳
      • updated:最后更新时间戳
      • resolutiondate:解决时间戳(如未关闭则为null)
      • versions:影响版本数组
      • fixVersions:修复版本数组
      • customfield_12319940:目标版本(自定义字段)
      • 以及其他适用的JIRA字段
  • note:如果结果被截断,则为信息性消息

重要说明

  • 默认情况下,查询包括:开放bug + 最近30天内关闭的bug
  • 这允许跟踪最近关闭活动以及当前开放bug
  • 脚本获取最大问题数(默认1000,可通过--limit配置)
  • total_count表示JIRA中所有匹配问题
  • 返回的数据包括每个问题的所有字段,提供完整信息
  • 对于大型数据集,增加--limit参数以获取更多问题
  • 问题可以有多个组件
  • 所有JIRA字段数据以原始格式保留

步骤 6: 呈现结果

基于原始JIRA数据:

  1. 告知用户总数与获取数的对比
  2. 解释原始数据包括所有JIRA字段
  3. 建议使用/teams:summarize-jiras如果需要摘要统计
  4. 原始问题数据可以传递给其他命令进行进一步处理
  5. 突出任何截断情况,建议增加–limit

错误处理

常见错误

  1. 认证错误

    • 症状:HTTP 401 未授权
    • 解决方案:验证JIRA_PERSONAL_TOKEN是否正确
    • 检查:确保令牌未过期
  2. 网络错误

    • 症状URLError或连接超时
    • 解决方案:检查网络连接和JIRA_URL是否可访问
    • 重试:脚本有30秒超时,考虑重试
  3. 无效项目

    • 症状:HTTP 400 或空结果
    • 解决方案:验证项目键是否正确(如"OCPBUGS",不是"ocpbugs")
  4. 缺少环境变量

    • 症状:关于缺少凭据的错误消息
    • 解决方案:设置所需环境变量(JIRA_URL、JIRA_PERSONAL_TOKEN)
  5. 速率限制

    • 症状:HTTP 429 请求过多
    • 解决方案:重试前等待,减少查询频率

调试

通过检查stderr启用详细输出:

python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS 2>&1 | tee debug.log

脚本参数

必需参数

  • --project:要查询的JIRA项目键
    • 格式:项目键(如"OCPBUGS"、“OCPSTRAT”)
    • 必须是有效的JIRA项目

可选参数

  • --component:按组件名称过滤

    • 值:组件名称的空格分隔列表
    • 默认:无(返回所有组件)
    • 区分大小写匹配
    • 示例:--component "kube-apiserver" "Management Console"
  • --status:按状态值过滤

    • 值:状态名称的空格分隔列表
    • 默认:无(返回除Closed外的所有状态)
    • 示例:--status New "In Progress" Verified
  • --include-closed:在结果中包括已关闭的bug

    • 默认:false(仅开放bug)
    • 指定时,包括"Closed"状态的bug
  • --limit:最大获取问题数

    • 默认:100
    • 最大:1000(JIRA API每次请求限制)
    • 更高的值提供更准确的统计,但性能较慢

输出格式

脚本输出JSON,包含元数据和原始问题数据:

{
  "project": "OCPBUGS",
  "total_count": 5430,
  "fetched_count": 100,
  "query": "project = OCPBUGS AND (status != Closed OR (status = Closed AND resolved >= \"2025-10-11\"))",
  "filters": {
    "components": null,
    "statuses": null,
    "include_closed": false,
    "limit": 100
  },
  "issues": [
    {
      "key": "OCPBUGS-12345",
      "fields": {
        "summary": "Example bug",
        "status": {"name": "New"},
        "priority": {"name": "Major"},
        "components": [{"name": "kube-apiserver"}],
        "created": "2025-11-01T10:30:00.000+0000",
        ...
      }
    },
    ...
  ],
  "note": "Showing first 100 of 5430 total results. Increase --limit for more data."
}

示例

示例 1: 列出所有开放bug

python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS

预期输出:包含OCPBUGS项目中所有开放bug的原始问题数据的JSON

示例 2: 按组件过滤

python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver"

预期输出:仅kube-apiserver组件的原始问题数据的JSON

示例 3: 包括已关闭的bug

python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --include-closed \
  --limit 500

预期输出:开放和已关闭bug的原始问题数据的JSON(最多500个问题)

示例 4: 按多个组件过滤

python3 plugins/teams/skills/list-jiras/list_jiras.py \
  --project OCPBUGS \
  --component "kube-apiserver" "etcd" "Networking"

预期输出:指定组件的bug的原始问题数据的JSON

与命令的集成

此技能设计用于:

  • 向其他命令(如summarize-jiras)提供原始JIRA数据
  • 直接用于临时JIRA查询
  • 作为自定义分析工作流的数据源
  • 导出JIRA数据供离线处理

相关技能

  • summarize-jiras:从JIRA数据计算摘要统计
  • list-regressions:获取发布回归数据
  • analyze-regressions:基于回归评估组件健康状况
  • get-release-dates:获取OpenShift发布日期

说明

  • 脚本使用Python的urllibjson模块(无外部依赖)
  • 输出始终为JSON格式,便于解析和进一步处理
  • 诊断消息写入stderr,数据写入stdout
  • 脚本对HTTP请求有30秒超时
  • 对于大型项目,考虑使用组件过滤器以减少查询大小
  • 返回的数据包括所有JIRA字段的完整信息
  • 如果需要摘要统计而不是原始数据,请使用/teams:summarize-jiras