# PR #21656 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[Fix] Handle pre-release tags in nightly wheel version parsing
- 合并时间：2026-03-30 13:29
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21656

---

# 执行摘要

- 一句话：修复 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` 文件中的版本解析逻辑：
1. 将 `PATCH` 变量重命名为 `PATCH_RAW` 以保留原始 patch 部分。
2. 使用 `sed` 命令 `s/[^0-9].*//` 从 `PATCH_RAW` 中剥离非数字后缀，得到纯数字 `PATCH`。
3. 递增 `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 配置调整，展示团队对持续集成流程的维护和改进。