前提条件
- 当前分支已有一份成功的体检报告。验证会绑定这份报告的固定提交,保证每条命令和证据都能回到同一个版本。
- 部署已启用隔离执行:Docker 正在运行、执行镜像已构建、
REPOCARE_REPRO_ENABLED=true,并且复现 Worker 在线。见部署与运维 · 启用隔离执行。 - 计划需要安装依赖时,管理员还要允许受限的依赖联网。
没有启用隔离执行时,仍可以生成和审阅计划,只是暂时不能执行。
入口
- 体检报告页的“验证贡献路径”;
- 体检页的“贡献路径”标签;
- 项目概览的“贡献路径验证”卡片。
三个阶段
| 阶段 | 做什么 |
|---|---|
| 计划审阅 | 确认文档与项目清单中提取出的命令 |
| 隔离演练 | 在受限的 Runner 中按计划执行 |
| 证据与修复 | 定位阻塞步骤,进入草稿与交付更新文档 |
审阅计划
RepoCare 优先读取 README、CONTRIBUTING 和项目脚本,生成一条最小贡献路径。计划不会自动运行,请逐条核对:
- 准备步骤:例如“准备 Node.js 依赖”“准备 Python 项目依赖”。
- 验证步骤:例如“运行项目测试”“运行代码检查”“运行类型检查”“运行 Python 测试”“运行 Go 测试”。
- 来源:每条命令都标明来自“文档原文”还是“项目清单”,可以展开查看原文。
- 执行边界:仓库、固定提交、自动识别的运行环境,以及“受限执行”的具体限制。
文档没有给出完整命令时,计划会根据受支持的项目清单生成最小验证路径,并提示“项目文档未提供完整命令”。快照中找不到可安全执行的命令时,会建议你先在 README、CONTRIBUTING 或项目配置中补充 npm、pytest 或 go test 命令。
确认并执行
- 勾选“我已核对上述命令和来源”。
- 点击确认,任务进入隔离执行队列。确认后任务交给独立的 Runner,不会在网页服务进程中执行。
- 执行期间可以离开页面,任务会继续;排队中可以“取消排队”。
执行环境的限制:
- 只读根文件系统,不授予额外 capabilities,限制 CPU、内存和进程数;
- 依赖准备阶段只有在管理员允许、且你确认依赖来源后才能联网;
- 验证阶段始终断网;
- 单个验证任务有时间预算,默认 180 秒,由管理员配置。
读懂结果
| 状态 | 含义 |
|---|---|
| 已走通 | 维护者确认的所有安装、测试和代码检查步骤都能完成(所有非后台步骤退出码为 0) |
| 有阻塞 | 至少一个步骤没有完成,请查看退出码和执行证据 |
| 环境阻塞 | Runner 环境暂时无法完成验证,例如镜像缺失、依赖网络不可用 |
| 计划已阻止 | 计划没有通过安全校验,不会执行 |
| 执行失败 | 隔离验证本身未能完成 |
| 已取消 | 由维护者取消 |
结果页显示“验证步骤通过率”,以及每一步的标准输出、错误输出和退出码。证据还包括执行计划、结果快照、源码准备记录等,每个文件都记录了完整性哈希。
发现阻塞之后
- 根据失败步骤的输出,判断是文档描述不准确、缺少前置步骤,还是项目本身的问题。
- 点击“进入草稿与交付”,基于阻塞证据更新 README 或 CONTRIBUTING。
- 文档改进合并后重新体检,再在新提交上重新验证。
项目提交变化后,旧的验证结果会标为“需要重新验证”,请在当前固定提交上重新演练。