Prhub

#23279 [CI] Fix nightly docker builds failing on root-owned workspace leftovers

原始 PR 作者 ishandhanani 合并时间 2026-04-21 02:56 文件变更 5 提交数 1 评论 1 代码增减 +21 / -0

执行摘要

修复自托管 CI 节点因 root 权限残留文件导致的 Docker 构建工作流失败。

PR body明确指出,nightly的'Build and Push Development Docker Images'工作流(以及相关兄弟工作流)在actions/checkout@v4步骤失败,错误为'EACCES: permission denied, rmdir '.../sgl-kernel/build/.cmake''。根本原因是自托管runner(如labubu)同时携带arm-docker-build-node和arm-kernel-build-node标签(x64节点同理),这些工作流共享同一个_work目录。sgl-kernel/build.sh在容器内以root身份运行,导致生成的文件在宿主机上归root所有,后续工作流无法删除这些文件。pr-test.yml中已经为kernel-build作业处理了此问题,本PR将相同的sudo rm -rf步骤镜像到所有docker-build-node工作流中,防止它们互相干扰。

该PR是典型的CI基础设施修复,逻辑简单直接。对于负责CI/CD的工程师,值得快速浏览以了解自托管runner共享工作空间时的权限处理模式。关注点在于sudo rm -rf的使用场景和与pr-test.yml的现有方案的一致性。无需深入源码级分析。

讨论亮点

由于review评论为空,没有具体的讨论交锋。PR body中已详细解释了问题根因和解决方案,并提供了测试计划。

实现拆解

  1. 识别问题工作流:分析哪些工作流使用x64-docker-build-nodearm-docker-build-node标签,并可能因共享工作空间而失败。确定了5个目标文件:release-docker-dev.yml(nightly构建)、release-docker.yml(标签发布)、release-docker-runtime.yml(runtime镜像发布)、trivy-scan-dev.yml(漏洞扫描)、patch-docker-dev.yml(手动补丁工作流)。
  2. 添加清理步骤:在每个目标工作流的jobs中,在actions/checkout@v4步骤之前,插入一个名为“Cleanup workspace (remove root-owned files from prior runs)”的步骤,执行sudo rm -rf "$GITHUB_WORKSPACE"/* || true。这确保了工作空间目录在检出前被彻底清空,即使有root所有权的残留文件也能被删除。
  3. 保持一致性:清理步骤的添加位置和命令与pr-test.yml中已有的处理方式(第431行和第479行)保持一致,确保解决方案的统一性。
  4. 排除非目标工作流create-manifests作业运行在ubuntu-22.04(GitHub托管)上,不共享自托管runner的工作空间,因此不需要此步骤。
  5. 无测试或配置配套改动:此变更仅涉及CI工作流配置,不涉及源码、测试或部署配置的修改。
文件 模块 状态 重要度
.github/workflows/release-docker-dev.yml CI 工作流 modified 3.85
.github/workflows/release-docker.yml CI 工作流 modified 3.65
.github/workflows/release-docker-runtime.yml CI 工作流 modified 3.65
.github/workflows/trivy-scan-dev.yml CI 工作流 modified 3.05
.github/workflows/patch-docker-dev.yml CI 工作流 modified 3.05

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 权限风险sudo rm -rf命令具有破坏性,如果路径变量错误或命令被误用,可能删除非预期文件。但此处使用"$GITHUB_WORKSPACE"/*并添加|| true,限制了删除范围并忽略错误,风险可控。
  2. 兼容性风险:变更仅影响特定标签的CI runner,对源码逻辑、运行时行为或用户API无影响。
  3. 性能风险:每次运行都执行清理可能增加少量开销,但相对于构建时间可忽略,且避免了因失败导致的重试成本。
  4. 安全风险:无新增安全漏洞,清理的是临时工作空间文件。
  1. 对系统影响:修复了CI流水线的稳定性问题,确保Docker镜像构建工作流能可靠运行,减少因权限问题导致的构建失败。
  2. 对用户影响:最终用户无感知,但开发者能获得更稳定的nightly镜像和发布流程。
  3. 对团队影响:减少了CI维护负担,避免了因残留文件导致的调试时间。
  4. 影响范围:仅限于使用自托管docker-build-node runner的CI工作流,不影响其他测试或部署流程。
权限操作风险 CI 稳定性依赖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论