执行摘要
- 一句话:修复 nightly wheel 构建中预发布标签解析失败的问题。
- 推荐动作:该 PR 变更简单,建议快速审查以熟悉 CI 版本解析逻辑,无需深入阅读。
功能与动机
根据 PR body,nightly wheel 构建(build-nightly-wheel 任务)在最新 git 标签包含预发布后缀(如 v0.5.10rc0)时失败,因为 cut -d. -f3 提取 10rc0,bash 算术 $((10rc0 + 1)) 报错 value too great for base,产生无效版本字符串并引发 packaging.version.InvalidVersion。修复目的是处理所有预发布后缀(rc、post、alpha、beta 等),确保构建成功。
实现拆解
修改了 .github/workflows/release-pypi-nightly.yml 文件中的版本解析逻辑:
- 将
PATCH 变量重命名为 PATCH_RAW 以保留原始 patch 部分。
- 使用
sed 命令 s/[^0-9].*// 从 PATCH_RAW 中剥离非数字后缀,得到纯数字 PATCH。
- 递增
PATCH 以计算 NEXT_PATCH,并构建下一个版本字符串。
关键文件:
.github/workflows/release-pypi-nightly.yml(模块 CI/CD): 这是唯一修改的文件,包含了修复版本解析逻辑的关键变更,确保 nightly wheel 构建正确处理预发布标签。
关键符号:未识别
评论区精华
没有 review 评论,因此无讨论摘要。
风险与影响
- 风险:风险较低:
sed 命令假设所有预发布后缀都以非数字字符开始,可能未覆盖所有变体(如 v0.5.10-rc0),但测试计划已验证常见格式。
- 版本解析逻辑变更仅影响 CI 流程,不触及核心代码,但若未来标签格式变化可能导致构建失败。
- 依赖 bash 算术和外部命令,在非标准环境中可能有问题,但该文件仅用于 GitHub Actions 工作流。
- 影响:影响范围仅限于 nightly wheel 构建流程:
- 修复了 CI 失败,确保持续集成正常工作,对用户透明。
- 不影响系统核心功能或用户接口,但维护了版本发布的可信性。
- 变更简单,易于理解和维护,无性能或安全影响。
- 风险标记:版本解析逻辑变更, 依赖外部命令 sed
关联脉络
- PR #21270 [CI] Lossen test_return_routed_experts threshold: 两者均涉及 CI 配置调整,展示团队对持续集成流程的维护和改进。
参与讨论