con un clic
con un clic
DART Test: unit tests, integration tests, CI validation, and debugging
DART CI: GitHub Actions, cache debugging, and platform-specific failures
DART Test: unit tests, integration tests, CI validation, and debugging
DART References: manage the experimental simulation research catalog (papers, textbooks, engines) with status, priority, and verdict
DART References: manage the experimental simulation research catalog (papers, textbooks, engines) with status, priority, and verdict
DART Contribute: branching, PRs, review workflow, and dual-PR bugfixes
| name | dart-ci |
| description | DART CI: GitHub Actions, cache debugging, and platform-specific failures |
Load this skill when debugging CI failures or working with GitHub Actions.
# Monitor PR checks
gh pr checks <PR_NUMBER>
gh pr checks <PR_NUMBER> --watch --interval 30 --fail-fast
# View run details
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
# 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>
For complete CI/CD guide: docs/onboarding/ci-cd.md
| 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 |
| Workflow | Purpose | Platforms |
|---|---|---|
ci_lint.yml | Formatting | Ubuntu |
ci_ubuntu.yml | Build + test + coverage | Ubuntu |
ci_macos.yml | Build + test | macOS |
ci_windows.yml | Build + test | Windows |
ci_freebsd.yml | Build + test (VM) | FreeBSD |
ci_gz_physics.yml | Gazebo integration | Ubuntu |
ci_cuda.yml | CUDA build/import gate | Ubuntu |
Prefer GitHub-hosted runners. The project does not maintain a self-hosted GPU runner — they are too tedious to maintain. Consequences:
ci_cuda.yml's CUDA Build job compiles the
CUDA targets on ubuntu-latest (nvcc compiles without a GPU).docs/design/scalable_compute_decisions.md).runs-on: [self-hosted, ...] GPU job.
pixi run check-phase5-cuda-workflow enforces this for ci_cuda.yml.gh run watch <RUN_ID>| Platform | Cached | Uncached |
|---|---|---|
| Ubuntu | 20-30 min | 45-60 min |
| macOS | 15-25 min | 30-45 min |
| Windows | 15-20 min | 25-35 min |