执行摘要
- 一句话:修复 deep-gemm wheel 发布流程中重命名和 PyPI 上传问题
- 推荐动作:对于关注发布自动化和 CI/CD 的工程师值得精读,尤其是将操作移入容器避免环境依赖的实践。但 reviewer 建议的代码优化未纳入,建议在后续 PR 中跟进。
功能与动机
重命名 wheel 和剥离 +cu130 的步骤在自托管构建节点上运行,但系统 python3 缺少 pip 模块("No module named pip"),且需要修改由构建容器创建的 root 拥有文件,因此需要将这些操作移到 Docker 容器内执行。同时需要默认 Python 版本从 3.10 升级到 3.12,并补齐 cu130 发布流程。
实现拆解
- 将重命名和版本剥离逻辑移入构建脚本:原本在 workflow 中独立的 "Rename wheel" 和 "Strip +cu130" 步骤不再执行,改为在
scripts/build_sgl_deep_gemm.sh 中作为容器内步骤执行。脚本先映射 CUDA 版本到 cuTAG(cu129/cu130),然后在构建容器内依次执行 wheel 构建、重命名(通过 rename_sgl_deep_gemm_whl.sh)和 cu130 专用版本剥离(生成 dist-pypi)。
- 更新 Dockerfile 默认 Python 版本:将
PYTHON_VERSION 和 PYTHON_TAG 从 3.10 改为 3.12,与 workflow 矩阵保持一致。
- 调整发布工作流矩阵和作业:在
.github/workflows/release-whl-deepgemm.yml 中,将 cu129 和 cu130 的 python-version 从 ["3.10"] 改为 ["3.12"],并新增 cu130 的发布作业(release-cu130),该作业下载 +cu130 的 wheel,附加到 sgl-project/whl 的 release 并更新索引文件。同时移除了 workflow 中独立的 rename 和 strip 步骤。
关键文件:
.github/workflows/release-whl-deepgemm.yml(模块 发布工作流;类别 infra;类型 infrastructure): 发布工作流主文件,控制整个构建与发布流程,本次修改默认 Python 版本为3.12、将重命名和 PyPI 上传步骤移入构建脚本,并新增 cu130 发布作业。
scripts/build_sgl_deep_gemm.sh(模块 构建脚本;类别 other;类型 core-logic): 核心构建脚本,本次将重命名和版本剥离逻辑从 workflow 移入脚本并在 Docker 容器内执行,解决了自托管节点缺少 pip 环境的问题。
docker/sgl-deep-gemm.Dockerfile(模块 Docker镜像;类别 infra;类型 infrastructure): Dockerfile 调整默认 Python 版本及标签,与 workflow 矩阵保持一致。
关键符号:未识别
评论区精华
Review 由 gemini-code-assist[bot] 提出四点改进建议:
风险与影响
- 风险:
- 发布流程可用性风险:构建脚本或 Docker 镜像构建失败会导致 wheel 不可用,需确保 CI 触发前本地测试通过。
- 可维护性风险:内联 bash 逻辑和未合并的映射逻辑增加了维护成本,后续修改需同时更新两处。
- 兼容性风险:版本剥离只处理 +cu 格式,若未来版本标识变化需更新脚本。
- 影响:仅影响 sgl-deep-gemm wheel 的发布流程,不影响运行时推理性能或其他模块。受众为发布维护者,降低因环境差异导致的发布失败概率。
- 风险标记:发布流程可能失败, 构建脚本可维护性风险, 版本剥离正则兼容性
关联脉络
- PR #24348 Add release workflow for sgl-deep-gemm wheels: 该PR添加了sgl-deep-gemm wheel发布工作流,本PR修复其运行中的问题。
参与讨论