[CI] Cache renderer runtime artifacts - #7242
Conversation
Greptile SummaryThis PR adds hardware- and Isaac-Sim-specific persistence for renderer runtime artifacts in task-test CI shards.
Confidence Score: 5/5The PR appears safe to merge with no concrete blocking or independently actionable non-blocking issues identified. Cache compatibility, per-job restore isolation, renderer-only mounts, publication trust boundaries, and snapshot validation are consistently wired through the changed workflow and actions. Important Files Changed
Sequence DiagramsequenceDiagram
participant Workflow as CI workflow
participant Key as Renderer cache key action
participant Cache as GitHub Actions cache
participant Tests as Package-test container
participant Inventory as Cache inventory
Workflow->>Key: Image/version and runner hardware
Key-->>Workflow: Compatibility collection and run key
Workflow->>Cache: Restore newest compatible snapshot
Cache-->>Workflow: Renderer cache directory
Workflow->>Tests: Bind-mount cache directories
Tests-->>Workflow: Updated runtime artifacts
Workflow->>Inventory: Measure and fingerprint cache
alt "Trusted warm job and changed snapshot <= 8 GB"
Workflow->>Cache: Save immutable snapshot
else PR job, unchanged, empty, or oversized
Workflow-->>Workflow: Skip publication
end
Reviews (1): Last reviewed commit: "Cache renderer runtime artifacts in CI" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The renderer-cache flow follows the existing restore-only/save-only trust model, but two scope and contract issues should be addressed before merge: the new cache input silently depends on volume-mount-source, and the persisted home cache includes all of XDG_CACHE_HOME rather than only renderer artifacts.
- Design and architecture: The compatibility key, restore fallback, sole-writer warm job, size limit, and fingerprint-based publish gates are consistent with the Warp-cache design. However, bind-mounting
/tmp/isaaclab-ci-home/.cachepersists every cache underXDG_CACHE_HOME, broadening the artifact set beyond the documented Kit, RTX, and NVIDIA compute caches and allowing unrelated entries to consume the shared 8 GB budget. Narrow the persisted paths to renderer-specific directories. - API: The new inputs default to empty, preserving existing callers, and the added positional argument matches the updated action invocation. However,
renderer-cache-host-diris documented as an independent optional input while its implementation is nested under the unrelatedvolume-mount-sourcebranch. Supplying the renderer cache alone therefore silently has no effect; either support it independently or validate and document the dependency. - Implementation: Key generation, restore/save handoff, inventory reporting, fingerprint comparison, and empty/oversized publish guards are internally consistent. The remaining implementation fixes are to move or validate renderer mount setup outside the source-mount condition and to avoid publishing the entire home XDG cache tree.
Minor fixes needed. Posted 2 actionable findings inline.
Automated review; human maintainers own approval decisions.
| isaacsim_cache_dir="${docker_runtime_dir}/isaac-sim/cache" | ||
| isaacsim_compute_cache_dir="${docker_runtime_dir}/isaac-sim/computecache" | ||
| home_cache_args="" | ||
| if [ -n "$renderer_cache_host_dir" ]; then |
There was a problem hiding this comment.
🟡 Warning · Api — Renderer cache silently requires unrelated source mount
renderer-cache-host-dir is declared as an independent optional input, but its mount setup is nested inside the if [ -n "$volume_mount_source" ] block, while the analogous warp-cache-host-dir is handled outside it. A caller that supplies only the renderer cache directory gets no mounts and no diagnostic, so the cache silently does nothing. Handle the renderer mounts outside that branch, or validate and document the dependency.
| isaacsim_cache_dir="${renderer_cache_host_dir}/isaac-sim/cache" | ||
| isaacsim_compute_cache_dir="${renderer_cache_host_dir}/isaac-sim/computecache" | ||
| home_cache_args="\ | ||
| -v ${renderer_cache_host_dir}/home/cache:/tmp/isaaclab-ci-home/.cache:rw \ |
There was a problem hiding this comment.
🟡 Warning · Design Architecture — Cache mount covers entire XDG cache home
/tmp/isaaclab-ci-home/.cache is both HOME/.cache and XDG_CACHE_HOME, so this mount persists and publishes every tool cache written there (including pip/uv caches from extra-pip-packages/extra-uv-packages), not just Kit/RTX artifacts as the input documents. Those entries are keyed only on GPU, driver and Isaac Sim image and consume the 8 GB publish budget. Mount only the renderer subdirectories instead.
Description
Persist the Kit, RTX, and NVIDIA compute caches used by the
isaaclab_tasksCI shards. Fresh temporary bind mounts currently force camera-enabled tests to rebuild the renderer cache in every job.The cache follows the existing Warp-cache trust model:
Test selection, assertions, process isolation, and coverage are unchanged. The inventory output will provide cache size and growth data during the rollout.
Type of change
Validation
uv run python -m pytest .github/actions/run-package-tests/test_renderer_cache_inventory.pybash -n .github/actions/run-tests/run_tests.shuv run isaaclab -fChecklist
CONTRIBUTORS.md