Skip to content

[Backport] Fix kitless multi-GPU tests and ROS link checks - #7558

Merged
kellyguo11 merged 2 commits into
release/3.0.0from
codex/backport-7540-multi-gpu-tests
Sep 4, 2026
Merged

[Backport] Fix kitless multi-GPU tests and ROS link checks#7558
kellyguo11 merged 2 commits into
release/3.0.0from
codex/backport-7540-multi-gpu-tests

Conversation

@kellyguo11

@kellyguo11 kellyguo11 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Description

Fixes two release CI failures without backporting #7405.

Kitless multi-GPU tests

Backports only the release-relevant multi-GPU test fix from #7540.

PR #7466 is present on release/3.0.0, so isaaclab.sh rejects a downloaded-Isaac-Sim link alongside the kitless image's active virtual environment. The test runner currently creates _isaac_sim -> /isaac-sim unconditionally because runtime mounts make /isaac-sim exist even in the kitless image.

This change creates the link only when /isaac-sim/python.sh exists. Kit-based test images retain their existing behavior, while the kitless multi-GPU smoke test resolves Python from VIRTUAL_ENV.

This intentionally excludes #7540's image-invariant/cache changes and all of #7405, which was not backported to the release branch.

Original PR: #7540

Documentation link check

The automatic backport's link check failed twice because www.ros.org and docs.ros.org return HTTP 403 to the GitHub runner. Both links remain valid. The link-check workflow already excludes known crawl blockers, so this adds a single ros.org exclusion covering both hosts without changing the documentation destinations or weakening checks for other domains.

Failed run: https://github.com/isaac-sim/IsaacLab/actions/runs/33828925399

Type of change

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

Release backport

Not applicable: this PR directly targets release/3.0.0.

Validation

  • Added a regression test that failed against the unmodified release branch and passes with the multi-GPU fix.
  • uv run --no-project --with pytest --with pyyaml python -m pytest docker/test/test_container_profiles.py -q - 14 passed.
  • bash -n .github/actions/run-tests/run_tests.sh - passed.
  • Parsed .github/workflows/check-links.yml with PyYAML and verified the exclusion matches both failing URLs.
  • Applicable file-scoped pre-commit hooks - passed. The branch-wide changelog hook is not applicable to a release backport because it compares historical release differences against develop.
  • The canonical uv run isaaclab -f command cannot resolve this branch's Linux/Windows-only lockfile on macOS; the equivalent file-scoped hooks were run directly.

Checklist

  • I have read and understood the contribution guidelines.
  • I have run the applicable pre-commit checks.
  • Documentation destinations remain unchanged.
  • My changes generate no new warnings.
  • I have added a regression test for the multi-GPU behavior.
  • No changelog fragment is required because no source package changed.
  • The contributors already exist in CONTRIBUTORS.md.

Backport the release-relevant multi-GPU test fix from #7540 without the Docker dependency changes introduced by #7405.
@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This backport prevents the multi-GPU test runner from treating the kitless image's mounted /isaac-sim directory as a downloaded Isaac Sim installation.

  • Removes any existing _isaac_sim link and recreates it only when /isaac-sim/python.sh is executable.
  • Adds a static regression test for the conditional-link requirement.

Confidence Score: 4/5

The PR appears safe to merge, with a non-blocking opportunity to make the new regression test verify shell behavior rather than source-line text.

The runtime change correctly distinguishes Kit-based and kitless layouts; the only accepted concern is that the added test can produce false confidence because it does not validate control flow.

Files Needing Attention: docker/test/test_container_profiles.py

Important Files Changed

Filename Overview
.github/actions/run-tests/run_tests.sh Correctly gates _isaac_sim creation on the presence of an executable Kit Python launcher, allowing kitless images to use VIRTUAL_ENV.
docker/test/test_container_profiles.py Adds regression coverage, but its same-line substring assertion does not verify that the marker check controls symlink creation.

Reviews (1): Last reviewed commit: "Guard Isaac Sim link in kitless tests" | Re-trigger Greptile

link_lines = [line.strip() for line in script.splitlines() if "ln -s /isaac-sim _isaac_sim" in line]

assert link_lines
assert all("/isaac-sim/python.sh" in line for line in link_lines), link_lines

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Assertion does not verify guard

The assertion only checks that /isaac-sim/python.sh appears on the same source line as the symlink command, so an unconditional command with that path in a comment or unrelated expression still passes. This weakens the regression test because it does not verify that the executable check actually controls link creation.

@kellyguo11 kellyguo11 changed the title [Backport] Fix kitless multi-GPU test setup (#7540) [Backport] Fix kitless multi-GPU tests and ROS link checks Sep 4, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

Reviewed the CI backport’s conditional _isaac_sim link creation, ROS-domain link-check exclusion, and regression coverage. The changed paths preserve kit-based behavior while avoiding the kitless virtual-environment conflict; no actionable pre-merge defect is established.

  • Design and architecture: The symlink guard remains localized to the container test runner’s existing setup point and distinguishes images by the executable Kit launcher. The source-inspection regression test is somewhat coupled to shell formatting and location, but this is a non-blocking maintainability tradeoff rather than a demonstrated defect.
  • API: No public Python API, CLI argument, Compose contract, or environment contract changes. The tolerant link removal remains compatible with set -e, and subsequent isaaclab.sh -p calls retain their intended kit and kitless interpreter-resolution paths.
  • Implementation: Checking for executable /isaac-sim/python.sh directly addresses the runtime-created directory ambiguity before creating _isaac_sim. The ros\.org exclusion covers both reported ROS hosts and follows the workflow’s existing substring-pattern style, with only the existing class of broad-match residual risk.

No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.

Automated review; human maintainers own approval decisions.

@kellyguo11

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Sep 4, 2026
@kellyguo11
kellyguo11 merged commit 9a6c51b into release/3.0.0 Sep 4, 2026
51 checks passed
@kellyguo11
kellyguo11 deleted the codex/backport-7540-multi-gpu-tests branch September 4, 2026 04:59
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.

2 participants