name: 获取发布日期 description: 从Sippy API获取OpenShift的发布日期和元数据
获取发布日期
这个技能提供从Sippy API获取OpenShift发布信息的功能,包括GA日期和开发开始日期。
何时使用此技能
在以下情况下使用此技能:
- 获取特定OpenShift发布的GA(一般可用性)日期
- 查找发布的开发开始日期
- 识别序列中的前一个发布
- 验证发布是否在Sippy中存在
- 确定发布是否在开发中或已GA
先决条件
-
Python 3 安装
- 检查是否安装:
which python3 - 需要Python 3.6或更高版本
- 大多数系统已预安装
- 检查是否安装:
-
网络访问
- 脚本需要网络访问以连接Sippy API
- 确保可以发送HTTPS请求到
sippy.dptools.openshift.org
实施步骤
步骤 1:验证先决条件
首先,确保Python 3可用:
python3 --version
如果未安装Python 3,指导用户根据其平台安装。
步骤 2:定位脚本
脚本位于:
plugins/teams/skills/get-release-dates/get_release_dates.py
步骤 3:运行脚本
使用发布参数执行脚本:
# 获取发布 4.21 的日期
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
--release 4.21
# 获取发布 4.20 的日期
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
--release 4.20
步骤 4:处理输出
脚本输出JSON数据,结构如下:
{
"release": "4.21",
"found": true,
"ga": "2026-02-17T00:00:00Z",
"development_start": "2025-09-02T00:00:00Z",
"previous_release": "4.20"
}
字段描述:
release:查询的发布标识符found:布尔值,表示发布是否在Sippy中存在ga:GA(一般可用性)日期。如果为null,发布仍在开发中。development_start:此发布的开发开始日期previous_release:序列中的前一个发布(如果没有则为空字符串)
如果未找到发布:
{
"release": "99.99",
"found": false
}
发布状态 - 开发中 vs 已GA:
- 开发中:如果
ga为null,发布仍在积极开发中{ "release": "4.21", "found": true, "development_start": "2025-09-02T00:00:00Z", "previous_release": "4.20" } - 已GA(已发布):如果
ga有时间戳,发布已达到一般可用性{ "release": "4.17", "found": true, "ga": "2024-10-01T00:00:00Z", "development_start": "2024-05-17T00:00:00Z", "previous_release": "4.16" }
步骤 5:使用信息
基于发布日期:
- 确定发布状态:检查发布是否在开发中或已GA
- 如果
ga为null:发布仍在开发中 - 如果
ga有时间戳:发布已达到一般可用性
- 如果
- 确定发布时间线:使用
development_start和ga日期- 计算开发时间:
ga-development_start - 对于开发中的发布:计算自
development_start以来的时间
- 计算开发时间:
- 查找相关发布:使用
previous_release导航发布序列 - 验证发布:在使用发布进行其他操作前检查
found字段
错误处理
脚本处理多个错误场景:
-
网络错误:如果无法连接Sippy API
Error: URL Error: [原因] -
HTTP错误:如果API返回错误状态
Error: HTTP Error 404: Not Found -
无效发布:脚本返回退出码1,输出中
found: false -
解析错误:如果API响应格式错误
Error: Failed to fetch release dates: [详情]
输出格式
脚本输出JSON到标准输出:
- 成功:退出码0,JSON中
found: true - 未找到发布:退出码1,JSON中
found: false - 错误:退出码1,错误信息到标准错误输出
API详情
脚本查询Sippy发布API:
- URL:https://sippy.dptools.openshift.org/api/releases
- 方法:GET
- 响应:JSON包含所有发布及其元数据
完整API响应包括:
releases:所有可用发布标识符的数组ga_dates:发布到GA日期的简单映射dates:包含GA和development_start日期的详细映射release_attrs:包括前一个发布在内的扩展属性
示例
示例 1:获取当前开发中的发布
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
--release 4.21
输出:
{
"release": "4.21",
"found": true,
"development_start": "2025-09-02T00:00:00Z",
"previous_release": "4.20"
}
示例 2:获取已GA的发布
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
--release 4.17
输出:
{
"release": "4.17",
"found": true,
"ga": "2024-10-01T00:00:00Z",
"development_start": "2024-05-17T00:00:00Z",
"previous_release": "4.16"
}
示例 3:查询不存在的发布
python3 plugins/teams/skills/get-release-dates/get_release_dates.py \
--release 99.99
输出:
{
"release": "99.99",
"found": false
}
退出码:1
与其他命令的集成
此技能可与其他团队技能结合使用:
- 分析回归前:验证发布是否存在
- 时间线上下文:了解发布已开发多长时间
- 发布状态:确定发布是否在开发中或已GA
- 发布导航:查找序列中的前一个/下一个发布
备注
- 脚本仅使用Python标准库(无外部依赖)
- Sippy缓存API响应,因此重复调用快速
- 发布标识符区分大小写(使用"4.21"而非"4.21.0")
- OKD发布以"-okd"后缀(例如"4.21-okd")
- ARO发布有特殊标识符(例如"aro-production")
- "Presubmits"是用于拉取请求数据的特殊发布
另请参阅
- 技能文档:
plugins/teams/skills/list-regressions/SKILL.md - Sippy API:https://sippy.dptools.openshift.org/api/releases
- 组件健康插件:
plugins/teams/README.md