Skip to content

Commit 27acbc5

Browse files
Merge latest develop into benchmark API
2 parents b2e801c + 79accca commit 27acbc5

417 files changed

Lines changed: 24398 additions & 4593 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.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../skills/developer/isaaclab-updating-environment-docs

.github/CODEOWNERS

Lines changed: 172 additions & 81 deletions
Large diffs are not rendered by default.

.github/actions/_lib/compute-deps-hash/action.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ runs:
4747
# Exact files/dirs whose full content is hashed. The Dockerfile is first.
4848
deps_files=(
4949
"${DOCKERFILE_PATH}"
50+
docker/scripts/install_carb_env_shim.sh
5051
isaaclab.sh
5152
environment.yml
5253
source/isaaclab/isaaclab/cli

.github/actions/multi-gpu/multi_gpu_shard_runner.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ mkdir -p /tmp/mgpu-base-home /tmp/mgpu-pyuserbase
4949

5050
# Pytest deps (same as run-tests action). junitparser is imported at
5151
# tools/conftest.py load time, so it must be present first.
52-
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flatdict flaky "coverage>=7.6.1"
52+
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flaky "coverage>=7.6.1"
5353

5454
# Shard count from nvidia-smi -L (truth; torch under-counts MIG).
5555
MIG_COUNT=$(nvidia-smi -L | grep -c "^ MIG ") # grep -c = count of matching lines (MIG slices)

.github/actions/run-tests/action.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ runs:
155155
if [ -n \"\$wait_pid\" ]; then kill \"\$wait_pid\" 2>/dev/null || true; fi; \
156156
exit 130" HUP INT TERM
157157
158+
echo "::group::Configuration / Setup"
158159
echo "Running tests in: $test_path"
159160
if [ -n "$pytest_options" ]; then
160161
echo "With pytest options: $pytest_options"
@@ -364,6 +365,7 @@ runs:
364365
fi
365366
366367
echo "Docker environment variables: '$docker_env_vars'"
368+
echo "::endgroup::"
367369
368370
# Run tests in a detached container and follow logs. Running detached
369371
# means the container lifecycle is independent of the shell - if the
@@ -394,7 +396,7 @@ runs:
394396
# set this detect-only flag, which makes cold asset downloads
395397
# fall back to slow repeated retries.
396398
unset HUB__ARGS__DETECT_ONLY
397-
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flatdict flaky \"coverage>=7.6.1\"
399+
./isaaclab.sh -p -m pip install pytest pytest-mock junitparser flaky \"coverage>=7.6.1\"
398400
if [ -n \"\${TEST_WHEELHOUSE_PACKAGES:-}\" ]; then
399401
if [ ! -d \"\${TEST_WHEELHOUSE_PATH:-}\" ]; then
400402
echo \"Wheelhouse path is missing: \${TEST_WHEELHOUSE_PATH:-}\"
@@ -429,6 +431,7 @@ runs:
429431
./isaaclab.sh -p -m pytest --ignore=tools/conftest.py $test_path $pytest_options -v --junitxml=tests/$result_file
430432
"
431433
434+
echo "::group::Following Docker container logs"
432435
# Stream container logs in background.
433436
docker logs -f "$container_name" &
434437
logs_pid=$!
@@ -453,13 +456,15 @@ runs:
453456
kill $logs_pid 2>/dev/null || true
454457
wait $logs_pid 2>/dev/null || true
455458
logs_pid=""
459+
echo "::endgroup::"
456460
457461
if [ $DOCKER_EXIT -eq 0 ]; then
458462
echo "🟢 Docker container completed successfully"
459463
else
460464
echo "🟠 Docker container failed (exit $DOCKER_EXIT), but continuing to copy results..."
461465
fi
462466
467+
echo "::group::Copy results"
463468
# Copy test results with error handling.
464469
# When volume-mounted, test output lands on the host filesystem directly
465470
# (docker cp cannot see bind-mounted paths after the container stops).
@@ -511,13 +516,16 @@ runs:
511516
elif docker cp "$container_name:/workspace/isaaclab/tests/comparison-images" "$img_dir" 2>/dev/null; then
512517
echo "🟢 Comparison images copied from container to $img_dir"
513518
fi
519+
echo "::endgroup::"
514520
521+
echo "::group::Cleanup"
515522
# Clean up container
516523
echo "🔵 Cleaning up Docker container..."
517524
docker rm $container_name 2>/dev/null || echo "🟠 Container cleanup failed, but continuing..."
518525
if [ -n "$docker_runtime_dir" ]; then
519526
rm -rf "$docker_runtime_dir" || echo "🟠 Docker runtime storage cleanup failed, but continuing..."
520527
fi
528+
echo "::endgroup::"
521529
522530
return $DOCKER_EXIT
523531
}

.github/workflows/docs.yaml

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,9 @@ jobs:
118118
git for-each-ref --format="%(refname:short)" refs/heads/ | xargs -r git branch -D
119119
make multi-docs
120120
121-
- name: Upload docs artifact
122-
uses: actions/upload-artifact@v7
121+
- name: Upload GitHub Pages artifact
122+
uses: actions/upload-pages-artifact@v4
123123
with:
124-
name: docs-html
125124
path: ./docs/_build
126125

127126
deploy-docs:
@@ -131,16 +130,15 @@ jobs:
131130
# deploy only on "deploy" branches
132131
if: needs.doc-build-type.outputs.trigger-deploy == 'true'
133132

134-
steps:
135-
- name: Download docs artifact
136-
uses: actions/download-artifact@v8
137-
with:
138-
name: docs-html
139-
path: ./docs/_build
133+
permissions:
134+
pages: write
135+
id-token: write
140136

141-
- name: Deploy to gh-pages
142-
uses: peaceiris/actions-gh-pages@v4
143-
with:
144-
github_token: ${{ secrets.GITHUB_TOKEN }}
145-
publish_dir: ./docs/_build
146-
keep_files: false
137+
environment:
138+
name: github-pages
139+
url: ${{ steps.deployment.outputs.page_url }}
140+
141+
steps:
142+
- name: Deploy GitHub Pages
143+
id: deployment
144+
uses: actions/deploy-pages@v4

.github/workflows/install-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ jobs:
6060
$'^\\.github/workflows/install-ci\\.yml$\tThis workflow file'
6161
$'^VERSION$\tVersion file'
6262
$'(^|/)pyproject\\.toml$\tPython project metadata'
63+
$'^uv\\.lock$\tuv lockfile'
6364
$'(^|/)environment\\.ya?ml$\tConda environment file'
6465
)
6566

.github/workflows/nightly-changelog.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ jobs:
210210
git config user.email "282401363+isaaclab-bot[bot]@users.noreply.github.com"
211211
git add source/*/changelog.d/ \
212212
source/*/docs/CHANGELOG.rst \
213-
source/*/config/extension.toml
213+
source/*/pyproject.toml
214214
if git diff --staged --quiet; then
215215
echo "No changelog fragments found — nothing to commit."
216216
else
@@ -224,16 +224,16 @@ jobs:
224224
# ``workflow_dispatch``) is preserved for traceability.
225225
#
226226
# The body lists every package that bumped, derived from the
227-
# staged ``extension.toml`` diff so the entries are accurate
227+
# staged pyproject.toml diff so the entries are accurate
228228
# regardless of which packages happen to have pending
229229
# fragments this run.
230230
MSG_FILE=$(mktemp)
231231
{
232232
echo "[CI][Auto Version Bump] Compile changelog fragments (${{ github.event_name }})"
233233
echo
234234
echo "Bumped packages:"
235-
for tom in $(git diff --staged --name-only -- 'source/*/config/extension.toml'); do
236-
pkg=$(echo "$tom" | sed -E 's|source/([^/]+)/config/extension.toml|\1|')
235+
for tom in $(git diff --staged --name-only -- 'source/*/pyproject.toml'); do
236+
pkg=$(echo "$tom" | sed -E 's|source/([^/]+)/pyproject.toml|\1|')
237237
old=$(git diff --staged "$tom" | awk -F'"' '/^-version/{print $2; exit}')
238238
new=$(git diff --staged "$tom" | awk -F'"' '/^\+version/{print $2; exit}')
239239
echo "- $pkg: $old → $new"

CONTRIBUTORS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Guidelines for modifications:
3333
* James Tigue
3434
* Kelly (Yunrong) Guo
3535
* Matthew Trepte
36+
* Maximilian Krause
3637
* Mayank Mittal
3738
* Mike Yan Michelis
3839
* Mikhail Yurasov
@@ -168,6 +169,7 @@ Guidelines for modifications:
168169
* Rebecca Zhang
169170
* Renaud Poncelet
170171
* René Zurbrügg
172+
* Richard Lei
171173
* Richard Schmitt
172174
* RinZ27
173175
* Ritvik Singh

apps/isaaclab.python.headless.kit

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ folders = [
180180
"${exe-path}/../isaacsim/extscache", # isaac cache extensions for pip
181181
"${exe-path}/../isaacsim/extsPhysics", # isaac physics extensions for pip
182182
"${app}", # needed to find other app files
183-
"${app}/../source", # needed to find extensions in Isaac Lab
184183
]
185184

186185
[settings.ngx]
@@ -194,19 +193,6 @@ enabled=true # Enable this for DLSS
194193
"isaacsim.core.simulation_manager" = {}
195194
"isaacsim.core.version" = {}
196195

197-
########################
198-
# Isaac Lab Extensions #
199-
########################
200-
201-
# Load Isaac Lab extensions last
202-
"isaaclab" = {order = 1000}
203-
"isaaclab_physx" = {order = 1000}
204-
"isaaclab_newton" = {order = 1000}
205-
"isaaclab_assets" = {order = 1000}
206-
"isaaclab_tasks" = {order = 1000}
207-
"isaaclab_mimic" = {order = 1000}
208-
"isaaclab_rl" = {order = 1000}
209-
210196
# Asset path
211197
# set the S3 directory manually to the latest published S3
212198
# note: this is done to ensure prior versions of Isaac Sim still use the latest assets

0 commit comments

Comments
 (0)