Skip to content

Commit 7da03e6

Browse files
committed
Merge remote-tracking branch 'origin/develop' into mtrepte/update_viz_docs
# Conflicts: # docs/source/overview/core-concepts/visualization.rst
2 parents d10f571 + c9dca35 commit 7da03e6

251 files changed

Lines changed: 5157 additions & 3115 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ docker/.container.cfg
2121
recordings/
2222
# ignore __pycache__
2323
**/__pycache__/
24+
**/.pytest_cache/
25+
**/.ruff_cache/
2426
**/*.egg-info/
2527
# ignore isaac sim symlink
2628
_isaac_sim

.github/actions/run-tests/run_tests.sh

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -357,13 +357,19 @@ run_tests() {
357357
fi
358358
if [ -n \"\${TEST_EXTRA_UV_PACKAGES:-}\" ]; then
359359
echo \"Installing extra packages with uv: \${TEST_EXTRA_UV_PACKAGES}\"
360-
# isaaclab.sh prints an informational line before command output, and pip
361-
# installs scripts into the user base when Isaac Sim site-packages is read-only.
362-
isaac_python=\"\$(./isaaclab.sh -p -c 'import sys; print(sys.executable)' | tail -n 1)\"
363-
isaac_user_site=\"\$(./isaaclab.sh -p -c 'import site; print(site.getusersitepackages())' | tail -n 1)\"
364-
uv_executable=\"\$(./isaaclab.sh -p -c 'import pathlib, site; print(pathlib.Path(site.getuserbase()) / \"bin\" / \"uv\")' | tail -n 1)\"
365-
if [ ! -x \"\${uv_executable}\" ]; then
366-
bash /with-python-package-retries.sh ./isaaclab.sh -p -m pip install uv
360+
# isaaclab.sh prints an [INFO] banner on stdout around the command output, so the
361+
# banner is filtered rather than positionally skipped.
362+
isaac_python=\"\$(./isaaclab.sh -p -c 'import sys; print(sys.executable)' | grep -v '^\[INFO\]' | tail -n 1)\"
363+
isaac_user_site=\"\$(./isaaclab.sh -p -c 'import site; print(site.getusersitepackages())' | grep -v '^\[INFO\]' | tail -n 1)\"
364+
# The image ships uv on PATH. Fall back to the user base only for images that do
365+
# not: pip installs into the venv, not the user base, when the interpreter is a venv,
366+
# so the user-base path is never created there.
367+
uv_executable=\"\$(command -v uv || true)\"
368+
if [ -z \"\${uv_executable}\" ]; then
369+
uv_executable=\"\$(./isaaclab.sh -p -c 'import pathlib, site; print(pathlib.Path(site.getuserbase()) / \"bin\" / \"uv\")' | grep -v '^\[INFO\]' | tail -n 1)\"
370+
if [ ! -x \"\${uv_executable}\" ]; then
371+
bash /with-python-package-retries.sh ./isaaclab.sh -p -m pip install uv
372+
fi
367373
fi
368374
bash /with-python-package-retries.sh \"\${uv_executable}\" pip install --python \"\${isaac_python}\" --target \"\${isaac_user_site}\" \${TEST_EXTRA_UV_PACKAGES}
369375
# Isaac Sim puts bundled packages ahead of the user site. Overlay only

.github/workflows/build.yaml

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
# -e TEST_FILTER_PATTERN="isaaclab_physx" \
4747
# -e TEST_INCLUDE_FILES="test_rigid_object_collection.py" \
4848
# -v "$PWD":/workspace/isaaclab isaac-lab-base:latest \
49-
# -c 'cd /workspace/isaaclab && /isaac-sim/python.sh -m pytest tools -v'
49+
# -c 'cd /workspace/isaaclab && ./isaaclab.sh -p -m pytest tools -v'
5050
#
5151
# Remember to REVERT all temporary changes before merging!
5252
# =============================================================================
@@ -169,6 +169,25 @@ jobs:
169169
echo "ci_image_tag=isaac-lab-ci:${sanitized_ref}-${SHA}" >> "$GITHUB_OUTPUT"
170170
echo "CI image tag: isaac-lab-ci:${sanitized_ref}-${SHA}"
171171
172+
test-dockerfile-contract:
173+
name: dockerfile-contract
174+
# Static analysis of the Dockerfile text: no image, no GPU, no Isaac Sim.
175+
runs-on: ubuntu-latest
176+
steps:
177+
- uses: actions/checkout@v6
178+
179+
- name: Set up uv
180+
uses: astral-sh/setup-uv@v6
181+
with:
182+
enable-cache: true
183+
184+
- name: Run Dockerfile contract tests
185+
shell: bash
186+
run: |
187+
set -euo pipefail
188+
uv run --no-project --with pytest \
189+
python -m pytest -q docker/test/test_dockerfile_nonroot.py
190+
172191
#region build jobs
173192
build:
174193
name: Build Base Docker Image
@@ -182,6 +201,12 @@ jobs:
182201
fetch-depth: 1
183202
lfs: true
184203

204+
# The GPU runners have no uv on PATH; the invariant check below needs it.
205+
- name: Set up uv
206+
uses: astral-sh/setup-uv@v6
207+
with:
208+
enable-cache: true
209+
185210
- name: Build and push to ECR
186211
uses: ./.github/actions/ecr-build-push-pull
187212
with:
@@ -191,6 +216,20 @@ jobs:
191216
dockerfile-path: docker/Dockerfile.base
192217
cache-tag: cache-base
193218

219+
# #6329 aborts the pip install when it strands a prebundled package's __init__.py
220+
# (nvbugs 6343978: 14 Isaac Sim extensions fail to load). The images install with
221+
# ``uv sync``, which never runs that guard, so assert the same invariant on the image.
222+
- name: Verify image invariants
223+
shell: bash
224+
env:
225+
IMAGE_TAG: ${{ needs.config.outputs.ci_image_tag }}
226+
run: |
227+
set -euo pipefail
228+
IMAGE_DIGEST="$(docker image inspect --format '{{.Id}}' "${IMAGE_TAG}")"
229+
export IMAGE_DIGEST
230+
uv run --no-project --with pytest \
231+
python -m pytest -q docker/test/test_image_invariants.py
232+
194233
build-curobo:
195234
name: Build cuRobo Docker Image
196235
runs-on: [self-hosted, gpu]
@@ -661,16 +700,6 @@ jobs:
661700
# Folded from the former standalone verify-base-non-root job: reuses the
662701
# base image already pulled by run-package-tests to keep the regression
663702
# check without burning a separate runner.
664-
- name: Run Dockerfile non-root regression test
665-
shell: bash
666-
run: |
667-
set -euo pipefail
668-
docker run --rm \
669-
-v "$PWD":/workspace/isaaclab \
670-
--entrypoint bash \
671-
"${{ needs.config.outputs.ci_image_tag }}" \
672-
-lc 'cd /workspace/isaaclab && /isaac-sim/python.sh -m pytest docker/test/test_dockerfile_nonroot.py -q'
673-
674703
- name: Verify Base runtime user is non-root
675704
shell: bash
676705
run: |
@@ -711,16 +740,6 @@ jobs:
711740
# Folded from the former standalone verify-curobo-non-root job: reuses
712741
# the curobo image already pulled by run-package-tests to keep the
713742
# regression check without burning a separate runner.
714-
- name: Run Dockerfile non-root regression test
715-
shell: bash
716-
run: |
717-
set -euo pipefail
718-
docker run --rm \
719-
-v "$PWD":/workspace/isaaclab \
720-
--entrypoint bash \
721-
"${{ needs.config.outputs.ci_image_tag }}-curobo" \
722-
-lc 'cd /workspace/isaaclab && /isaac-sim/python.sh -m pytest docker/test/test_dockerfile_nonroot.py -q'
723-
724743
- name: Verify cuRobo runtime user is non-root
725744
shell: bash
726745
run: |

.github/workflows/check-links.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ jobs:
9797
--exclude 'graphics\.pixar\.com'
9898
--exclude 'openpbs\.org'
9999
--exclude 'docutils\.sourceforge\.io'
100+
--exclude '^https://opensource\.org/'
100101
--exclude 'huggingface\.co/datasets/nvidia/PhysicalAI-Robotics-NuRec'
101102
--exclude 'huggingface\.co/nvidia/COMPASS'
102103
--exclude 'huggingface\.co/nvidia/X-Mobility'

.github/workflows/config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
# which the CI credential can reach.
1111
isaacsim_image_name: nvcr.io/0947644777160149/internal/isaac-sim
1212
# Isaac Sim 6.1.0-alpha.50 (b86cf6ce) includes Kit 110.3.0-360924's fix for NVBug 6566677.
13-
isaacsim_image_tag: latest-develop@sha256:e9272374eddc69155fa12c7a9e0bb6d36778071c6cb649db08a67a25d9c563b8
13+
isaacsim_image_tag: latest-develop@sha256:50d2491d9e04da52bb39f0c8a993fba991d2d13939e88f2008577e00a17c4b03
1414
isaaclab_image_name: nvcr.io/0947644777160149/internal/isaac-lab
1515
ovphysx_wheelhouse_image: ""

.github/workflows/docs.yaml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ jobs:
5757
steps:
5858
- name: Checkout code
5959
uses: actions/checkout@v6
60-
with:
61-
lfs: true
6260

6361
- name: Set up uv
6462
uses: astral-sh/setup-uv@v6
@@ -68,7 +66,7 @@ jobs:
6866

6967
- name: Install docs dependencies
7068
run: |
71-
bash "$GITHUB_WORKSPACE/.github/actions/_lib/with-python-package-retries.sh" uv sync --extra test
69+
bash "$GITHUB_WORKSPACE/.github/actions/_lib/with-python-package-retries.sh" uv sync --extra dev
7270
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"
7371
7472
- name: Build current version docs
@@ -91,8 +89,6 @@ jobs:
9189
steps:
9290
- name: Checkout code
9391
uses: actions/checkout@v6
94-
with:
95-
lfs: true
9692

9793
- name: Set up uv
9894
uses: astral-sh/setup-uv@v6
@@ -102,7 +98,7 @@ jobs:
10298

10399
- name: Install docs dependencies
104100
run: |
105-
bash "$GITHUB_WORKSPACE/.github/actions/_lib/with-python-package-retries.sh" uv sync --extra test
101+
bash "$GITHUB_WORKSPACE/.github/actions/_lib/with-python-package-retries.sh" uv sync --extra dev
106102
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"
107103
108104
- name: Generate multi-version docs

.github/workflows/license-check.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
ISAACSIM_ACCEPT_EULA: YES
6363
run: |
6464
bash "$GITHUB_WORKSPACE/.github/actions/_lib/with-python-package-retries.sh" \
65-
uv sync --extra all --extra isaacsim --extra test --extra rlinf --extra mimic
65+
uv sync --extra all --extra isaacsim --extra dev --extra rlinf --extra mimic
6666
# ``[tool.uv.pip] prerelease = "allow"`` lets unpinned tools float onto
6767
# prereleases. pip-licenses 6.0.0a1 reports an empty License where 5.x reports
6868
# ``UNKNOWN``, which license-exceptions.json keys on, and joins multi-license

0 commit comments

Comments
 (0)