DARTCI/CD故障排除 dart-ci

此技能用于DART项目的持续集成和持续部署(CI/CD)故障排除,特别针对GitHub Actions。它包括快速命令、常见失败解决方案、工作流架构和缓存管理,帮助开发者高效调试和优化CI/CD流程。关键词:CI/CD, GitHub Actions, 故障排除, DART, 缓存调试, 平台特定失败。

CI/CD 0 次安装 0 次浏览 更新于 3/6/2026

name: dart-ci description: DART CI/CD故障排除 - GitHub Actions、缓存调试、平台特定失败

DART CI/CD故障排除

加载此技能以调试CI失败或处理GitHub Actions。

快速命令

# 监控PR检查
gh pr checks <PR_NUMBER>
gh pr checks <PR_NUMBER> --watch --interval 30 --fail-fast

# 查看运行详情
gh run list --branch <BRANCH> -e pull_request -L 20
gh run watch <RUN_ID> --interval 30
gh run view <RUN_ID> --json status,conclusion,url

# 调试失败
gh run view <RUN_ID> --job <JOB_ID> --log-failed
gh run view <RUN_ID> --json jobs --jq '.jobs[] | {name, databaseId}'

# 重新运行失败作业
gh run rerun <RUN_ID> --failed
gh run rerun <RUN_ID> --job <DATABASE_ID>

完整文档

完整CI/CD指南:docs/onboarding/ci-cd.md

常见失败模式

失败类型 解决方案
格式化失败 pixi run lint 然后推送
Codecov补丁失败 为未覆盖的行添加测试
FreeBSD RTTI失败 使用类型枚举 + static_cast 代替 dynamic_cast
macOS ARM64 SEGFAULT 替换 alloca()/VLAs 为 std::vector<T>
RTD构建失败 使用防御性 .get(key, default) 模式
gz-physics失败 使用 pixi run -e gazebo test-gz 复现

工作流架构

工作流 目的 平台
ci_lint.yml 格式化 Ubuntu
ci_ubuntu.yml 构建 + 测试 + 覆盖率 Ubuntu
ci_macos.yml 构建 + 测试 macOS
ci_windows.yml 构建 + 测试 Windows
ci_freebsd.yml 构建 + 测试 (虚拟机) FreeBSD
ci_gz_physics.yml Gazebo集成 Ubuntu

快速迭代循环

  1. 从作业日志中识别失败步骤
  2. 使用相同构建开关本地复现
  3. 修复最小的失败测试
  4. 推送并监控:gh run watch <RUN_ID>

缓存

  • sccache/ccache 减少构建时间 50-70%
  • 检查工作流日志中的缓存命中率
  • 如果需要,通过更改缓存键强制缓存清除

预期CI时间

平台 缓存后 未缓存
Ubuntu 20-30 分钟 45-60 分钟
macOS 15-25 分钟 30-45 分钟
Windows 15-20 分钟 25-35 分钟