执行摘要
- 一句话:修复CI中/rerun-stage命令在sgl-kernel PR上无法正确生成工作流运行URL的问题。
- 推荐动作:该PR变更简单直接,适合CI维护者快速浏览以理解变量同步的重要性。值得关注的设计决策是确保本地变量与工作流输入的一致性,避免因元数据不匹配导致的功能降级。
功能与动机
PR #23492引入的自动include_wheel_build路径需要pr_head_sha来检测内核变更,但忘记更新handle_rerun_stage函数中的本地pr_head_sha变量。这导致find_workflow_run_url函数构建的预期显示标题(不含SHA后缀)与工作流实际运行名称(包含SHA后缀)不匹配,URL查找超时后成功评论降级为警告信息。具体问题在PR #21247(修改sgl-kernel)上观察到:调度本身正常工作,但成功评论中的深链接丢失。
实现拆解
- 问题定位与修复:在
scripts/ci/utils/slash_command_handler.py的handle_rerun_stage函数中,当检测到内核变更且非AMD阶段时,除了设置inputs["pr_head_sha"] = pr.head.sha(已在PR #23492中添加)外,现在也同步设置本地变量pr_head_sha = pr.head.sha。
- 逻辑一致性:这样确保
find_workflow_run_url函数构建的预期显示标题包含SHA后缀,与工作流运行名称(由.github/workflows/pr-test.yml中的run-name指令生成)匹配。
- 向后兼容性:fork路径的本地pr_head_sha已在
if is_fork:块中设置,保持不变;非fork且无内核变更的路径也不受影响。
- 测试配套:无新增测试文件,但PR body中描述了离线模拟验证和计划中的触发测试。
关键文件:
scripts/ci/utils/slash_command_handler.py(模块 CI脚本;类别 infra;类型 infrastructure;符号 handle_rerun_stage): 这是唯一修改的文件,包含/rerun-stage命令的处理逻辑,修复了工作流运行URL查找的回归问题。
关键符号:handle_rerun_stage
关键源码片段
scripts/ci/utils/slash_command_handler.py
这是唯一修改的文件,包含/rerun-stage命令的处理逻辑,修复了工作流运行URL查找的回归问题。
def handle_rerun_stage(...):
# ... 其他代码 ...
if kernel_changes and not is_amd_stage:
inputs["include_wheel_build"] = "true"
# include_wheel_build 依赖 filter-api 检测内核变更,这需要 pr_head_sha。
# 确保为非 fork PR 设置 pr_head_sha,并保持本地 pr_head_sha 同步,
# 以便 find_workflow_run_url 构建包含 SHA 后缀的预期显示标题
# (工作流的 run-name 会在 inputs.pr_head_sha 设置时包含 SHA)。
if not is_fork:
inputs["pr_head_sha"] = pr.head.sha
pr_head_sha = pr.head.sha # 新增:同步本地变量
# Record dispatch time before triggering
dispatch_time = time.time()
# ... 后续代码 ...
评论区精华
无review评论,所有讨论内容均在PR body中由作者Kangyan-Zhou详细说明。
风险与影响
- 风险:风险极低:仅修改一个CI脚本中的变量赋值,不涉及核心业务逻辑、性能或安全。潜在风险包括:
1) 变量同步逻辑可能在其他分支路径中被遗漏,但PR body已分析所有路径的兼容性;
2) 若未来工作流运行名称格式变更,可能导致URL查找再次失败。
- 影响:影响范围限于CI基础设施:修复后,修改sgl-kernel的非fork PR使用/rerun-stage命令时,成功评论将正确包含工作流运行URL,提升开发者体验。不影响用户功能、系统性能或团队开发流程。
- 风险标记:元数据不一致
关联脉络
- PR #23492 [CI] /rerun-stage: auto-include wheel build when PR modifies sgl-kernel/: 该PR引入了自动include_wheel_build路径,但遗漏了本地pr_head_sha的同步,导致本次修复的回归问题。
- PR #21247 未提供标题(上下文未给出): PR body中提到在该PR(torch 2.11,修改sgl-kernel)上观察到了问题现象。
参与讨论