列出回归Skill ListRegressions

本技能用于获取和分析OpenShift组件健康回归数据,通过Python脚本查询组件健康API,检索并处理JSON输出,帮助跟踪和报告组件稳定性。关键词包括OpenShift、组件健康、回归分析、API查询、DevOps、云原生、Kubernetes。

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

name: 列出回归 description: 获取和分析OpenShift版本的组件健康回归

列出回归

本技能提供获取不同版本OpenShift组件回归数据的功能。它使用Python脚本查询组件健康API并检索回归信息。

何时使用此技能

使用此技能当您需要:

  • 分析特定OpenShift版本的组件健康
  • 跨版本跟踪回归
  • 按开放/关闭状态筛选回归
  • 生成组件稳定性报告

先决条件

  1. Python 3安装

    • 检查是否安装:which python3
    • 需要Python 3.6或更高版本
    • 在大多数系统上预装
  2. 网络访问

    • 脚本需要网络访问以连接到组件健康API
    • 确保可以进行HTTPS请求
  3. API端点配置

    • 脚本包含占位符API端点,需要更新
    • list_regressions.py中更新base_url为实际的组件健康API端点

实施步骤

步骤1:验证先决条件

首先,确保Python 3可用:

python3 --version

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

步骤2:定位脚本

脚本位于:

plugins/teams/skills/list-regressions/list_regressions.py

步骤3:运行脚本

使用适当参数执行脚本:

# 基本用法 - 某个版本的所有回归
python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.17

# 按特定组件筛选
python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.21 \
  --components Monitoring "kube-apiserver"

# 按多个组件筛选
python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.21 \
  --components Monitoring etcd "kube-apiserver"

# 按开发窗口筛选(已GA版本 - 包括开始和结束)
python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.17 \
  --start 2024-05-17 \
  --end 2024-10-01

# 按开发窗口筛选(开发中版本 - 仅开始)
python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.21 \
  --start 2025-09-02

步骤4:处理输出

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

{
  "summary": {
    "total": <number>,
    "triaged": <number>,
    "triage_percentage": <number>,
    "time_to_triage_hrs_avg": <number or null>,
    "time_to_triage_hrs_max": <number or null>,
    "time_to_close_hrs_avg": <number or null>,
    "time_to_close_hrs_max": <number or null>,
    "open": {
      "total": <number>,
      "triaged": <number>,
      "triage_percentage": <number>,
      "time_to_triage_hrs_avg": <number or null>,
      "time_to_triage_hrs_max": <number or null>,
      "open_hrs_avg": <number or null>,
      "open_hrs_max": <number or null>
    },
    "closed": {
      "total": <number>,
      "triaged": <number>,
      "triage_percentage": <number>,
      "time_to_triage_hrs_avg": <number or null>,
      "time_to_triage_hrs_max": <number or null>,
      "time_to_close_hrs_avg": <number or null>,
      "time_to_close_hrs_max": <number or null>,
      "time_triaged_closed_hrs_avg": <number or null>,
      "time_triaged_closed_hrs_max": <number or null>
    }
  },
  "components": {
    "ComponentName": {
      "summary": {
        "total": <number>,
        "triaged": <number>,
        "triage_percentage": <number>,
        "time_to_triage_hrs_avg": <number or null>,
        "time_to_triage_hrs_max": <number or null>,
        "time_to_close_hrs_avg": <number or null>,
        "time_to_close_hrs_max": <number or null>,
        "open": {
          "total": <number>,
          "triaged": <number>,
          "triage_percentage": <number>,
          "time_to_triage_hrs_avg": <number or null>,
          "time_to_triage_hrs_max": <number or null>,
          "open_hrs_avg": <number or null>,
          "open_hrs_max": <number or null>
        },
        "closed": {
          "total": <number>,
          "triaged": <number>,
          "triage_percentage": <number>,
          "time_to_triage_hrs_avg": <number or null>,
          "time_to_triage_hrs_max": <number or null>,
          "time_to_close_hrs_avg": <number or null>,
          "time_to_close_hrs_max": <number or null>,
          "time_triaged_closed_hrs_avg": <number or null>,
          "time_triaged_closed_hrs_max": <number or null>
        }
      },
      "open": [...],
      "closed": [...]
    }
  }
}

关键:输出包括预计算的计数和健康指标:

  • summary:所有组件的总体统计信息
  • components:按组件名称映射的对象,包含summaryopenclosed数组
  • 始终使用summarycomponents.*.summary字段进行计数,而不是尝试自己计数数组,以确保准确性

时间字段已简化以优化响应大小。

步骤5:生成分析(可选)

基于回归数据:

  1. 使用summarycomponents.*.summary对象中的摘要计数
  2. 使用components.*.summary.open.total识别受影响最严重的组件
  3. 与先前版本比较
  4. 分析每个组件的开放与关闭回归趋势
  5. 如果需要,创建可视化

错误处理

常见错误

  1. 网络错误:症状如URLError或连接超时;检查网络连接和防火墙规则。
  2. HTTP错误:症状如HTTP 404、500等;验证API端点URL是否正确。
  3. 无效版本:症状如空结果或错误响应;验证版本格式(如“4.17”,而不是“v4.17”)。
  4. 无效布尔值:症状如ValueError: Invalid boolean value;仅对–opened标志使用“true”或“false”。

调试

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

python3 plugins/teams/skills/list-regressions/list_regressions.py \
  --release 4.17 2>&1 | tee debug.log

脚本参数

必需参数

  • --release:要查询的版本号(格式如“4.17”)

可选参数

  • --components:按组件名称筛选(大小写不敏感)
  • --test-name:按精确测试名称筛选(区分大小写)
  • --test-name-contains:按测试名称子字符串筛选(不区分大小写)
  • --start--end:按时间窗口筛选

输出格式

脚本输出JSON,包含按组件分组的摘要和回归数据。

示例

示例命令和预期输出如上文所示。

自定义

可以更新API端点或添加自定义过滤器。

集成与命令

此技能设计用于/teams:analyze-regressions命令,但也可以直接由其他命令或脚本调用。

相关技能

  • 组件健康分析
  • 版本比较
  • 回归跟踪
  • 质量指标报告

注意

  • 脚本使用Python内置的urllib模块(无外部依赖)
  • 输出始终为JSON格式,便于解析
  • 诊断信息写入stderr,数据写入stdout
  • 脚本有30秒的HTTP请求超时