Prhub

#21714 Fix human-eval CI install on 5090 runners

原始 PR 作者 alisonshao 合并时间 2026-03-31 09:53 文件变更 1 提交数 5 评论 13 代码增减 +2 / -0

执行摘要

修复 CI 中 human-eval 安装失败,通过固定 setuptools 版本为 70.0.0。

CI在5090运行器上失败,原因是切换到 nvidia/cuda:12.8.0-devel-ubuntu22.04 镜像后,uv pip install 将setuptools升级至最新(82.x),而 setuptools>=71 移除了 pkg_resources 模块,human-eval的 setup.py 导入了此模块。PR body中提供了失败示例链接,需恢复CI测试以确保代码变更的持续集成。

这是一个简单的CI修复,对于理解setuptools版本管理和CI依赖问题有帮助,但无需精读。建议快速浏览以了解类似问题的解决模式,可作为CI配置优化的小技巧参考。

讨论亮点

review中,hnyls2002 询问:"Why not fix the version of setuptools",作者 alisonshao 回应担心固定精确版本(如70.0)可能与需要更高版本的包冲突,使用 <71 可以给pip灵活性来解决依赖冲突,同时保证 pkg_resources 存在。讨论聚焦于版本固定策略的设计权衡,最终提交采用了 ==70.0.0 作为折中方案,体现了CI环境中依赖管理的谨慎考虑。

实现拆解

修改 .github/workflows/pr-test.yml 文件,在 stage-b-test-1-gpu-smallstage-b-test-2-gpu-large 两个作业的 run 部分,添加 pip install "setuptools==70.0.0" 命令,紧接在 bash scripts/ci/cuda/ci_install_dependency.sh 之后。这确保在克隆和安装human-eval仓库之前,setuptools版本被固定为70.0.0,该版本同时支持PEP 660可编辑安装和 pkg_resources 模块。提交历史显示从最初尝试去除可编辑模式,到最终固定版本,迭代解决兼容性问题。

文件 模块 状态 重要度
.github/workflows/pr-test.yml CI 基础设施 modified 3.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

版本固定策略 设计

hnyls2002: "Why not fix the version of `setuptools`" alisonshao: "i worry pinning the exact version, such as 70.0, could conflict if another package needs, say, setuptools>=70.1. <71 gives pip flexibility to resolve without conflicts while guaranteeing pkg_resources exists"

结论:最终采用 `setuptools==70.0.0` 作为固定版本,平衡了兼容性和灵活性 · 已解决

风险与影响

主要风险是版本依赖冲突:固定 setuptools==70.0.0 可能与其他需要更高版本setuptools的包不兼容,但此风险较低,因为仅在CI中特定步骤使用。此外,CI环境对setuptools版本敏感,未来setuptools变更可能导致类似问题复发,增加维护负担。风险限于CI脚本,不影响生产代码。

直接影响是恢复CI中human-eval相关测试的通过,确保代码变更的持续集成测试功能正常,提高开发流程的稳定性。对用户和系统无直接影响,仅影响内部CI流程。影响范围局限于 .github/workflows/pr-test.yml 文件,程度较小,但有助于团队及时发现依赖问题。

版本依赖冲突 CI 脆弱性

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论