diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faac553b..5336b827 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,16 +28,18 @@ env: jobs: - test: - name: Run pre commit checks and tests - runs-on: [self-hosted, zurich] - timeout-minutes: 45 + + pre_commit: + name: Pre-commit + runs-on: [self-hosted, gpu] + timeout-minutes: 30 container: - image: nvcr.io/nvstaging/isaac-amr/isaaclab_arena:latest - credentials: - username: $oauthtoken - password: ${{ env.NGC_API_KEY }} + image: python:3.11-slim + + env: + # We're getting issues with the markers on the checked out files. + SKIP: check-executables-have-shebangs steps: - &install_git_step @@ -54,25 +56,23 @@ jobs: name: Clean up symlinks in submodules directory run: | rm -f .git/modules/submodules/IsaacLab/index.lock || true - rm -rf submodules/IsaacLab || true + rm -rf submodules/* || true + + # Fix "detected dubious ownership in repository" inside containers + - &mark_repo_safe_step + name: Mark repo as safe for git + run: git config --global --add safe.directory "$PWD" # Checkout Code - &checkout_step name: Checkout Code uses: actions/checkout@v4 with: - fetch-depth: 0 - clean: true submodules: true # LFS checkout here somehow causes issues when LFS stuff changes over time. # So I do LFS manually in a step after. # lfs: true - # Fix "detected dubious ownership in repository" inside containers - - &mark_repo_safe_step - name: Mark repo as safe for git - run: git config --global --add safe.directory "$PWD" - # Pull LFS files explicitly (in case checkout didn't get them all) - &git_lfs_step name: Git LFS @@ -81,9 +81,39 @@ jobs: git lfs install --local git lfs pull - - &setup_python_step - name: Setup Python - uses: actions/setup-python@v3 + - name: git status + run: | + git status + + - name: Run pre-commit + uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files --verbose + + test: + name: Run tests + runs-on: [self-hosted, gpu] + timeout-minutes: 60 + needs: [pre_commit] + + container: + image: nvcr.io/nvstaging/isaac-amr/isaaclab_arena:latest + credentials: + username: $oauthtoken + password: ${{ env.NGC_API_KEY }} + + steps: + # nvidia-smi + - &nvidia_smi + name: nvidia-smi + run: nvidia-smi + + # Setup + - *install_git_step + - *cleanup_step + - *mark_repo_safe_step + - *checkout_step + - *git_lfs_step - &install_project_step name: Install project and link isaac-sim @@ -91,21 +121,19 @@ jobs: pip install --no-cache-dir -e . [ -e ./submodules/IsaacLab/_isaac_sim ] || ln -s /isaac-sim ./submodules/IsaacLab/_isaac_sim - - name: Run pre-commit - run: | - pip install --no-cache-dir --upgrade pip pre-commit - pre-commit run --all-files - + # Run the tests (excluding the gr00t related tests) - name: Run pytest excluding policy-related tests. First we run all tests without cameras. run: /isaac-sim/python.sh -m pytest -sv -m "not with_cameras" isaaclab_arena/tests/ --ignore=isaaclab_arena/tests/policy/ - name: Run pytest excluding policy-related tests. Now we run all tests with cameras. run: /isaac-sim/python.sh -m pytest -sv -m with_cameras isaaclab_arena/tests/ --ignore=isaaclab_arena/tests/policy/ + test_policy: name: Run policy-related tests with GR00T & cuda12_8 deps - runs-on: [self-hosted, zurich] - timeout-minutes: 30 + runs-on: [self-hosted, gpu] + timeout-minutes: 60 + needs: [pre_commit] container: image: nvcr.io/nvstaging/isaac-amr/isaaclab_arena:cuda_gr00t @@ -113,22 +141,27 @@ jobs: username: $oauthtoken password: ${{ env.NGC_API_KEY }} steps: + # nvidia-smi + - *nvidia_smi + # Setup. - *install_git_step - *cleanup_step - - *checkout_step - *mark_repo_safe_step + - *checkout_step - *git_lfs_step - - *setup_python_step - *install_project_step + # Run the policy (GR00T) related tests. - name: Run policy-related pytest run: /isaac-sim/python.sh -m pytest -sv isaaclab_arena/tests/policy/ + build_docs_pre_merge: name: Build the docs (pre-merge) - runs-on: [self-hosted, zurich] + runs-on: [self-hosted, gpu] timeout-minutes: 30 + needs: [pre_commit] container: image: python:3.11-slim @@ -136,22 +169,30 @@ jobs: steps: # Setup. - *install_git_step + - *mark_repo_safe_step - *cleanup_step - - *checkout_step + + # Checkout all branches, and tags, such that sphinx-multiversion can build the docs for all versions. + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true # Build docs - name: Build docs + working-directory: ./docs run: | - cd docs pip3 install -r requirements.txt - make SPHINXOPTS=-W html - touch ./_build/html/.nojekyll + make SPHINXOPTS=-W multi-docs + touch ./_build/.nojekyll + build_and_push_image_post_merge: name: Build & push NGC image (post-merge) - runs-on: [self-hosted, zurich] - timeout-minutes: 60 - needs: [test, test_policy, build_docs_pre_merge] # only push if tests passed + runs-on: [self-hosted, gpu] + timeout-minutes: 90 + needs: [test, test_policy] # only push if tests passed if: github.event_name == 'push' && github.ref == 'refs/heads/main' container: diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index d2e9326d..59f1db41 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -28,7 +28,7 @@ env: jobs: deploy_docs: name: Deploy the docs - runs-on: [self-hosted, zurich] + runs-on: [self-hosted, gpu] timeout-minutes: 30 container: @@ -48,33 +48,24 @@ jobs: with: clean: true fetch-depth: 0 + fetch-tags: true + + # Fix "detected dubious ownership in repository" inside containers + - name: Mark repo as safe for git + run: git config --global --add safe.directory "$PWD" # Build docs - name: Build docs run: | cd docs pip3 install -r requirements.txt - make SPHINXOPTS=-W html - touch ./_build/html/.nojekyll + make SPHINXOPTS=-W multi-docs + touch ./_build/.nojekyll - name: Copy redirect file run: | cp ./docs/_redirect/index.html ./docs/_build/index.html - # Upload docs artifact - - name: Upload docs artifact - uses: actions/upload-artifact@v4 - with: - name: docs-html - path: ./docs/_build - - # Download docs artifact - - name: Download docs artifact - uses: actions/download-artifact@v4 - with: - name: docs-html - path: ./docs/_build - # Deploy to gh-pages - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v3 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..8e4075da --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,18 @@ +{ + "python.analysis.extraPaths": [ + "${workspaceFolder}", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_assets", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_rl", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_mimic", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_tasks", + ], + "cursorpyright.analysis.extraPaths": [ + "${workspaceFolder}", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_assets", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_rl", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_mimic", + "${workspaceFolder}/submodules/IsaacLab/source/isaaclab_tasks", + ] +} diff --git a/README.md b/README.md index dff15fdb..004484dc 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Isaac-Lab Arena is a comprehensive robotics simulation framework that enhances NVIDIA Isaac Lab by providing a composable, scalable system for creating diverse simulation environments and evaluating robot learning policies. The framework enables researchers and developers to rapidly prototype and test robotic tasks with various robot embodiments, objects, and environments. -To get started with Isaac-Lab Arena, see our [documentation site](https://fictional-disco-qm1zq12.pages.github.io/html/index.html). +To get started with Isaac-Lab Arena, see our [documentation site](https://isaac-sim.github.io/IsaacLab-Arena/main/index.html).