name: 列出回归 description: 获取和分析OpenShift版本的组件健康回归
列出回归
本技能提供获取不同版本OpenShift组件回归数据的功能。它使用Python脚本查询组件健康API并检索回归信息。
何时使用此技能
使用此技能当您需要:
- 分析特定OpenShift版本的组件健康
- 跨版本跟踪回归
- 按开放/关闭状态筛选回归
- 生成组件稳定性报告
先决条件
-
Python 3安装
- 检查是否安装:
which python3 - 需要Python 3.6或更高版本
- 在大多数系统上预装
- 检查是否安装:
-
网络访问
- 脚本需要网络访问以连接到组件健康API
- 确保可以进行HTTPS请求
-
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:按组件名称映射的对象,包含summary、open和closed数组- 始终使用
summary和components.*.summary字段进行计数,而不是尝试自己计数数组,以确保准确性
时间字段已简化以优化响应大小。
步骤5:生成分析(可选)
基于回归数据:
- 使用
summary和components.*.summary对象中的摘要计数 - 使用
components.*.summary.open.total识别受影响最严重的组件 - 与先前版本比较
- 分析每个组件的开放与关闭回归趋势
- 如果需要,创建可视化
错误处理
常见错误
- 网络错误:症状如
URLError或连接超时;检查网络连接和防火墙规则。 - HTTP错误:症状如HTTP 404、500等;验证API端点URL是否正确。
- 无效版本:症状如空结果或错误响应;验证版本格式(如“4.17”,而不是“v4.17”)。
- 无效布尔值:症状如
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请求超时