用途:为 Megatron Bridge 仓库提供 CI/CD 参考,涵盖流水线结构、提交与 PR 工作流、CI 失败排查及常见失败模式。
提交与 PR 工作流:不要直接提交到 main,始终创建功能分支;提交需签名,使用 git commit -s -m "message";PR 标题遵循 Conventional Commits 格式,如 <type>(<scope>): <description>,完整流程见 CONTRIBUTING.md。
CI 触发机制:工作流定义在 .github/workflows/cicd-main.yml,由 push 触发而非 pull_request。copy-pr-bot 控制运行时机:PR 分支所有提交由已验证的 NVIDIA 贡献者 GPG 签名则自动触发,或由 NVIDIAN 评论 /ok to test <commit-sha> 手动触发。受信任后代码被复制到 pull-request/<number> 分支并推送,从而触发 CI。因此 CI 不在未受信任的推送运行,运行分支是 pull-request/<number>,新提交不会自动重跑,同一 PR 的并发运行会自动取消。
流水线结构:pre-flight → lint-check → cicd-wait-in-queue → cicd-container-build → unit-tests-core、unit-tests-diffusion、functional-tests(L0 始终运行,L1 需 needs-more-tests 标签,L2 按计划或 full-test-suite 标签)。计划与夜间运行完成时发送 Slack 通知。
失败排查:可从分支名提取 PR 号,使用 gh pr view、gh pr diff、gh pr checks 查看;用 gh run list 与 gh run view <run_id> --log-failed 获取日志,日志可能超万行,需分块扫描。CI 中 Hugging Face 模型默认离线(HF_HUB_OFFLINE=1),测试夹具不应依赖实时 Hub API 调用。
常见失败模式包括:CI 未启动(提交未签名且无 /ok to test)、lint 失败(ruff 或 pre-commit 违规)、容器构建失败(依赖冲突或 uv.lock 过期)、单元测试失败、L0 功能测试失败、HF 夹具离线失败、队列等待过长、MCore 子模块不匹配、陈旧检查点自动恢复、Slurm 端口冲突等。