dart-ci
GitHub用于调试 CI/CD 失败及 GitHub Actions 工作流。提供快速命令监控 PR 检查、查看运行详情及重试作业,并列出格式化、测试、跨平台构建等常见故障的解决方案。
Trigger Scenarios
Install
npx skills add dartsim/dart --skill dart-ci -g -y
SKILL.md
Frontmatter
{
"name": "dart-ci",
"description": "DART CI: GitHub Actions, cache debugging, and platform-specific failures"
}
DART CI/CD Troubleshooting
Load this skill when debugging CI failures or working with GitHub Actions.
When the failing claim depends on model/scene structure, physics behavior, or
Filament output, also load dart-verify-sim and reproduce it with a text oracle plus
assessed visual evidence. Document a visual exception when graphics support is
unavailable or not applicable in the failing environment.
Quick Commands
# Monitor PR checks
gh pr checks <PR_NUMBER>
gh pr view <PR_NUMBER> --json headRefOid,mergeStateStatus,statusCheckRollup
# View run details
gh run list --branch <BRANCH> -e pull_request -L 20
gh run view <RUN_ID> --json status,conclusion,url
# Debug failures
gh run view <RUN_ID> --job <JOB_ID> --log-failed
gh run view <RUN_ID> --json jobs --jq '.jobs[] | {name, databaseId}'
# Rerun failed jobs only after explicit maintainer/user approval
gh run rerun <RUN_ID> --failed
gh run rerun <RUN_ID> --job <DATABASE_ID>
Full Documentation
For complete CI/CD guide: docs/onboarding/ci-cd.md
Common Failure Modes
| Failure Type | Solution |
|---|---|
| Formatting fails | pixi run lint; push only after approval |
| Codecov patch fails | Add tests for uncovered lines |
| FreeBSD RTTI fails | Use type enums + static_cast instead of dynamic_cast |
| macOS ARM64 SEGFAULT | Replace alloca()/VLAs with std::vector<T> |
| RTD build fails | Use defensive .get(key, default) patterns |
| gz-physics fails | Reproduce with pixi run -e gazebo test-gz |
| CI Filament fails | Configure with pixi run config -- -DDART_ENABLE_GUI_SMOKE_TESTS=ON, then run pixi run test-gui; native-window failures with pixi run ctest --test-dir build/<env>/cpp/Release -L filament-native (pixi run ctest --test-dir build/<env>/cpp -C Release -L filament-native on Windows; under xvfb-run on headless Linux); consumer failures with pixi run python scripts/test_gui_install.py on that build directory |
Workflow Architecture
The CI workflows that a failing PR check belongs to (full workflow index:
docs/onboarding/ci-cd.md § "Workflow Index"):
| Workflow | Purpose | Platforms |
|---|---|---|
ci_ubuntu.yml |
AI checks, lint, build, test, coverage | Ubuntu |
ci_macos.yml |
Lint, build, test | macOS |
ci_windows.yml |
Lint, build, test | Windows |
ci_filament.yml |
Filament GUI functional lane (<runner>-Filament-functional; not yet required) |
Ubuntu, Windows, macOS |
ci_freebsd.yml |
Build + test (VM) | FreeBSD |
ci_simd.yml |
SIMD x86 instruction-level matrix | Ubuntu x86_64 |
ci_toolchain.yml |
Alternate toolchain build + test | Ubuntu |
ci_gz_physics.yml |
Gazebo integration | Ubuntu |
api_doc.yml |
Doxygen API docs build | Ubuntu |
FreeBSD, toolchain, CodeQL, wheels, Linux ASan/coverage/Eigen alignment, and
macOS Debug run only in nightly.yml; their failures arrive as
nightly-failure issues, not PR checks.
Default test gates exclude device-dependent CTests labeled gui-device and
Python rendering tests; device-free GUI tests still run. pixi run test-gui
selects all gui CTests except filament-native. The capture smoke option
DART_ENABLE_GUI_SMOKE_TESTS defaults to OFF, needs a graphics device, and
replaces DART_ENABLE_GUI_OSG_SMOKE_TESTS; CI Filament enables it.
Downstream Compatibility Policy
Package, exported-target, collision, constraint, and dependency changes can
affect Gazebo/gz-physics even when local unit tests pass. Reproduce those
failures with the Gazebo Pixi environment when practical:
pixi run -e gazebo test-gz.
Fast Iteration Loop
- Identify failing step from job logs
- Reproduce locally with same build toggles
- Fix the smallest failing test
- Push only after explicit maintainer/user approval, then monitor:
gh run view <RUN_ID> --json status,conclusion,url
Caching And Duration
Treat the current run and job logs as authoritative. Inspect cache restore/save steps and job timestamps before changing a key; do not rely on fixed duration or cache-speed estimates in this skill.
Version History
-
f630c91
Current 2026-10-18 20:26
新增 Quick Commands 章节;更新 Filament GUI 测试配置;移除 CUDA Runner Policy 章节。
-
deb9869
2026-09-08 21:46
新增Common Failure Modes表格以提供具体解决方案,移除Quick Commands代码块,强化CUDA Runner安全策略说明。
-
bcd584e
2026-09-02 23:41
更新常见故障模式:新增Codecov覆盖率失败、FreeBSD RTTI失败、macOS ARM64段错误、RTD构建失败及gz-physics失败的解决方案;调整模拟器验证触发条件描述。
-
b9fbefc
2026-07-19 11:30
新增视觉验证联动指引(dart-verify-sim)及 CUDA Runner 安全策略说明
- e0d13fd 2026-07-05 10:36


