Skip to content

[CI] Link _isaac_sim only where Kit is installed in the test container - #7543

Draft
hujc7 wants to merge 1 commit into
isaac-sim:release/3.0.0from
hujc7:jichuanh/kitless-isaac-sim-link-release-3.0.0
Draft

[CI] Link _isaac_sim only where Kit is installed in the test container#7543
hujc7 wants to merge 1 commit into
isaac-sim:release/3.0.0from
hujc7:jichuanh/kitless-isaac-sim-link-release-3.0.0

Conversation

@hujc7

@hujc7 hujc7 commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

Multi-GPU training smoke (kit-less) fails on every PR into release/3.0.0, exiting before pytest
runs. Two lines in the shared test-container script fix it.

Description

1. Cause

run_tests.sh bind-mounts nine writable runtime directories under /isaac-sim/… into every
container, so /isaac-sim exists as a directory in the kit-less image as well — which ships no Kit.
The container script then plants the link unconditionally:

rm _isaac_sim || true
ln -s /isaac-sim _isaac_sim

isaaclab.sh treats an _isaac_sim directory without a .isaaclab_source_build marker as a
downloaded Isaac Sim and refuses to combine it with an active virtual environment (#7466, on this
branch as 69d5d1f). Dockerfile.kitless sets VIRTUAL_ENV=/opt/isaaclab-venv (#6355), so every
kit-less run stops at:

[ERROR] Downloaded Isaac Sim packages cannot be combined with a Python virtual environment.
🔴 Failed to copy specific result file: Could not find the file /workspace/isaaclab/tests/multi-gpu-smoke-kitless-report.xml

2. Change

Plant the link only where Kit actually lives at that path. Kit images are unaffected — they have
/isaac-sim/python.sh and get the link exactly as before; the kit-less image resolves its
interpreter through VIRTUAL_ENV, as it did before #7466.

The same script serves ~29 CI jobs through run-tests and run-package-tests, all but one of which
pass a Kit image, so testing the container rather than threading a "kit-less" flag through every
caller keeps the fix to one place.

3. Verification

  • The regression test added beside the existing kit-less invariant in
    docker/test/test_container_profiles.py fails on the unmodified script
    (AssertionError: ['ln -s /isaac-sim _isaac_sim']) and passes with it. 14 pass in that file.
  • bash -n on the script; pre-commit on both files.
  • The same two-line change on develop turned the job green end to end: 8 passed, 7 deselected in 790.74s, with zero occurrences of the venv error in the job log.

4. Relationship to the develop fix

The develop-side PR pairs this with a second, unrelated fix for the Build Base Docker Image job,
which fails there because #7405 added an image-invariants step that a deps-cache hit cannot satisfy.
#7405 is not on this branch — its Dockerfile.base still installs with
_isaac_sim/python.sh -m pip, there is no invariants step, and its author left the backport box
unticked. That half would be dead config here, so this PR carries only the part that applies.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • Documentation needs no change: CI-internal script
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • Changelog: no source package changed
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

run_tests.sh bind-mounts writable runtime storage under /isaac-sim into
every image, so that directory exists in the kit-less image too, and the
unconditional _isaac_sim link then reads as a downloaded Isaac Sim.
isaaclab.sh (isaac-sim#7466) refuses that next to the image's VIRTUAL_ENV, so the
kit-less multi-GPU smoke exits before pytest on every PR into this
branch. Link only where Kit's python.sh exists.
@hujc7

hujc7 commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator Author

@greptileai review

@greptile-apps

greptile-apps Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR prevents kit-less test containers from creating an _isaac_sim link that conflicts with their active virtual environment.

  • Creates the link only when the Kit-provided /isaac-sim/python.sh executable is present.
  • Adds a regression test enforcing that the shared test script guards link creation with the Kit installation check.

Confidence Score: 5/5

The PR appears safe to merge with no actionable defects identified.

The conditional preserves the link in supported Kit images and omits it in kit-less images, avoiding the virtual-environment conflict while retaining the expected simulator discovery path.

Important Files Changed

Filename Overview
.github/actions/run-tests/run_tests.sh Correctly gates _isaac_sim link creation on the expected Kit executable while preserving existing Kit-container behavior.
docker/test/test_container_profiles.py Adds a focused regression assertion that prevents unconditional link creation from returning.

Reviews (1): Last reviewed commit: "Link _isaac_sim only where Kit is instal..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant