# PR #7335 完整报告

- 仓库：`PaddlePaddle/FastDeploy`
- 标题：[CI] Fix nightly test error and add container cleanup in build_rl
- 合并时间：2026-04-11 12:14
- 原文链接：http://prhub.com.cn/PaddlePaddle/FastDeploy/pull/7335

---

# 执行摘要
该 PR 修复了 FastDeploy CI 中 nightly 测试因系统资源限制导致的失败问题，通过添加 sysctl 参数增加 IPC 消息队列容量，并移除了 Docker 的 --privileged 标志以提升安全性，同时在 build_rl 工作流中引入容器清理逻辑。变更聚焦于 CI 基础设施优化，对用户无直接影响，但需关注移除特权模式可能对 RDMA 编译的潜在影响。

# 功能与动机
根据 PR body，主要动机是解决 nightly 测试中观察到的容器运行时和系统级限制问题，特别是共享内存 /IPC 限制不足可能导致测试不稳定或崩溃。同时，通过移除不必要的 --privileged 使用来增强 CI 安全性，并添加容器清理以避免残留容器影响后续作业。作者引用 "Fix failures observed in nightly tests" 和 "Improve CI security and stability" 作为关键驱动力。

# 实现拆解
修改涉及两个 CI workflow 文件：

1. **`.github/workflows/_accuracy_test.yml`**：
 - 将 `--shm-size=64G` 改为 `64g`（大小写调整）。
 - 添加 `--sysctl kernel.msgmax=1048576` 和 `--sysctl kernel.msgmnb=268435456`，以增加 IPC 消息队列容量，缓解资源限制导致的测试失败。

2. **`.github/workflows/_build_linux_rl.yml`**：
 - 移除 `--privileged` 标志，仅保留 `--cap-add=SYS_PTRACE`，减少安全风险。
 - 添加 `--name ${runner_name}` 为容器命名。
 - 在 job 末尾新增 "Terminate and delete the container" 步骤，使用 `if: always()` 确保无论构建成功与否都执行清理：
     ```bash
     docker exec -t ${{ runner.name }} /bin/bash -c 'find /workspace -mindepth 1 -delete'
     docker rm -f ${{ runner.name }}
     ```

# 评论区精华
AI review bot 提出了四个关键建议，但未看到作者回应：

> **🟡 建议 **使用了 `--rm` 标志，容器退出时会自动删除。后面添加的 `Terminate and delete the container` step 会尝试删除已经不存在的容器，这会导致错误信息输出。建议移除 `--rm` 标志或删除清理步骤。

> **🟡 建议 **移除 `--privileged` 标志可能导致 RDMA 编译失败。脚本中设置了 `FD_ENABLE_RDMA_COMPILE=1`，RDMA 通常需要特权模式。请确认 RDMA 编译是否仍然正常工作。

这些讨论揭示了设计权衡：安全改进（移除特权）可能牺牲特定功能（RDMA 编译），而清理逻辑存在冗余风险。团队选择直接合并，可能基于对 CI 环境的自信或优先级判断。

# 风险与影响
**风险**：
- **RDMA 编译失败**：移除 `--privileged` 可能使依赖特权的 RDMA 编译在启用 `FD_ENABLE_RDMA_COMPILE=1` 时失败，需监控后续构建作业。
- **清理步骤冗余**：`--rm` 与手动清理并存可能导致错误输出，虽不影响功能但污染日志。
- **兼容性问题**：新增 sysctl 参数在非 Linux 环境或旧内核中可能不受支持，但基于现有 workflow 实践，风险较低。

**影响**：
- **对系统**：提升 CI 稳定性和安全性，减少资源泄漏，潜在影响 RDMA 相关构建流程。
- **对用户**：无直接影晌，间接受益于更可靠的测试和构建管道。
- **对团队**：需关注 RDMA 编译验证，并考虑统一 `--shm-size` 大小写等代码规范。

# 关联脉络
该 PR 是 FastDeploy 近期 CI 优化系列的一部分：
- **PR #7315**：同样添加容器清理步骤以防止资源泄漏，与本 PR 的清理逻辑一脉相承。
- **PR #7283**：修改 workflow 配置以提升网络稳定性，同属基础设施改进。

结合历史 PR 分析，团队持续投入 CI 基础设施的健壮性优化，包括测试稳定性（如 PR #7268 标记高内存测试顺序执行）、安全加固（如 PR #7315 移除特权）和资源管理。本 PR 进一步体现了这一趋势，但 AI review 揭示的未解决问题可能反映团队对自动化反馈的采纳策略或时间压力。