Commit b1af9e3c authored by Kelly Guo's avatar Kelly Guo Committed by Kelly Guo

Migrates CI to GitHub Action Workflows from CodeBuild (#521)

# Description

This PR migrates our CI/CD pipelines from AWS CodeBuild to GitHub
Actions, providing better integration, improved visibility, and enhanced
developer experience.

# What's New

1. Pre-Merge CI Pipeline (build.yml)

- Parallel Test Execution: IsaacLab Tasks and General Tests run in
parallel
- Test Result Reporting: Integrated dorny/test-reporter for PR-level
test summaries
- Artifact Management: Automatic test result collection and combination
- PR Comments: Detailed test results posted directly to PRs

2. Post-Merge CI Pipeline (postmerge-ci.yml)

- Multi-Version Docker Builds: Builds images for multiple IsaacSim
versions
- Efficient Tagging: Single build with multiple tags (combined +
build-numbered)
- Docker Hub Integration: Automatic push to Docker Hub with proper
authentication
- Cached Builds: GitHub Actions cache for faster subsequent builds

3. Daily Compatibility Tests (daily-compatibility.yml)

- Backwards Compatibility: Tests against different IsaacSim versions
- Scheduled Execution: Daily runs at 2 AM UTC (6 PM PST)
- Manual Trigger: Support for manual testing with custom IsaacSim
versions
- Comprehensive Reporting: Detailed compatibility reports and artifacts

4. Repository Mirroring (mirror-repository.yml)

- Post-Merge Mirroring: Automatically mirrors main branch to target
repository
- Admin-Only Access: Environment protection for secure mirroring
- Conditional Execution: Only runs on specific repository

# Technical Improvements
**Docker Build Optimization**

- Single Build, Multiple Tags: Eliminated duplicate builds for
efficiency
- Buildx Integration: Modern Docker buildx for better caching and
multi-platform support
- GitHub Actions Cache: Faster builds with intelligent layer caching

**Test Infrastructure**

- Modular Actions: Reusable composite actions for Docker build, test
execution, and result processing
- Robust Error Handling: Graceful handling of missing artifacts and test
failures
- XML Report Combination: Merges multiple test suites into unified
reports

**Security & Permissions**

- Environment Protection: Admin-only access for sensitive operations
- Granular Permissions: Proper token and permission management
- Secure Authentication: NGC and Docker Hub integration with secrets
parent f06d0e10
version: 0.2
phases:
install:
runtime-versions:
nodejs: 14
pre_build:
commands:
- git config --global user.name "Isaac LAB CI Bot"
- git config --global user.email "isaac-lab-ci-bot@nvidia.com"
build:
commands:
- git remote set-url origin https://github.com/${TARGET_REPO}.git
- git checkout $SOURCE_BRANCH
- git push --force https://$GITHUB_TOKEN@github.com/${TARGET_REPO}.git $SOURCE_BRANCH:$TARGET_BRANCH
version: 0.2
phases:
build:
commands:
- echo "Building and pushing Docker image"
- |
# Determine branch name or use fallback
if [ -n "$CODEBUILD_WEBHOOK_HEAD_REF" ]; then
BRANCH_NAME=$(echo $CODEBUILD_WEBHOOK_HEAD_REF | sed 's/refs\/heads\///')
elif [ -n "$CODEBUILD_SOURCE_VERSION" ]; then
BRANCH_NAME=$CODEBUILD_SOURCE_VERSION
else
BRANCH_NAME="unknown"
fi
# Replace '/' with '-' and remove any invalid characters for Docker tag
SAFE_BRANCH_NAME=$(echo $BRANCH_NAME | sed 's/[^a-zA-Z0-9._-]/-/g')
# Use "latest" if branch name is empty or only contains invalid characters
if [ -z "$SAFE_BRANCH_NAME" ]; then
SAFE_BRANCH_NAME="latest"
fi
# Get the git repository short name
REPO_SHORT_NAME=$(basename -s .git `git config --get remote.origin.url`)
if [ -z "$REPO_SHORT_NAME" ]; then
REPO_SHORT_NAME="verification"
fi
# Parse the env variable string into an array
mapfile -d ' ' -t IMAGE_BASE_VERSIONS <<< "$ISAACSIM_BASE_VERSIONS_STRING"
for IMAGE_BASE_VERSION in "${IMAGE_BASE_VERSIONS[@]}"; do
IMAGE_BASE_VERSION=$(echo "$IMAGE_BASE_VERSION" | tr -d '[:space:]')
# Combine repo short name and branch name for the tag
COMBINED_TAG="${REPO_SHORT_NAME}-${SAFE_BRANCH_NAME}-${IMAGE_BASE_VERSION}"
docker login -u \$oauthtoken -p $NGC_TOKEN nvcr.io
docker build -t $IMAGE_NAME:$COMBINED_TAG \
--build-arg ISAACSIM_BASE_IMAGE_ARG=$ISAACSIM_BASE_IMAGE \
--build-arg ISAACSIM_VERSION_ARG=$IMAGE_BASE_VERSION \
--build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim \
--build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab \
--build-arg DOCKER_USER_HOME_ARG=/root \
-f docker/Dockerfile.base .
docker push $IMAGE_NAME:$COMBINED_TAG
docker tag $IMAGE_NAME:$COMBINED_TAG $IMAGE_NAME:$COMBINED_TAG-b$CODEBUILD_BUILD_NUMBER
docker push $IMAGE_NAME:$COMBINED_TAG-b$CODEBUILD_BUILD_NUMBER
done
This diff is collapsed.
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: 'Combine XML Test Results'
description: 'Combines multiple XML test result files into a single file'
inputs:
tests-dir:
description: 'Directory containing test result files'
default: 'tests'
required: false
output-file:
description: 'Output combined XML file path'
required: true
reports-dir:
description: 'Directory to store the combined results'
default: 'reports'
required: false
runs:
using: composite
steps:
- name: Combine XML Test Results
shell: sh
run: |
# Function to combine multiple XML test results
combine_xml_results() {
local tests_dir="$1"
local output_file="$2"
local reports_dir="$3"
echo "Combining test results from: $tests_dir"
echo "Output file: $output_file"
echo "Reports directory: $reports_dir"
# Check if reports directory exists
if [ ! -d "$reports_dir" ]; then
echo "⚠️ Reports directory does not exist: $reports_dir"
mkdir -p "$reports_dir"
fi
# Check if tests directory exists
if [ ! -d "$tests_dir" ]; then
echo "⚠️ Tests directory does not exist: $tests_dir"
echo "Creating fallback XML..."
echo '<?xml version="1.0" encoding="utf-8"?><testsuite name="combined" tests="0" failures="0" errors="1" time="0"><testcase classname="setup" name="no_tests_dir"><error message="Tests directory not found">Tests directory was not found</error></testcase></testsuite>' > "$output_file"
return
fi
# Find all XML files in the tests directory
echo "Searching for XML files in: $tests_dir"
xml_files=$(find "$tests_dir" -name "*.xml" -type f 2>/dev/null | sort)
if [ -z "$xml_files" ]; then
echo "⚠️ No XML files found in: $tests_dir"
echo "Creating fallback XML..."
echo '<?xml version="1.0" encoding="utf-8"?><testsuite name="combined" tests="0" failures="0" errors="1" time="0"><testcase classname="setup" name="no_xml_files"><error message="No XML files found">No XML test result files were found</error></testcase></testsuite>' > "$output_file"
return
fi
# Count XML files found
file_count=$(echo "$xml_files" | wc -l)
echo "✅ Found $file_count XML file(s):"
echo "$xml_files" | while read -r file; do
echo " - $file ($(wc -c < "$file") bytes)"
done
# Create combined XML
echo "🔄 Combining $file_count XML files..."
echo '<?xml version="1.0" encoding="utf-8"?>' > "$output_file"
echo '<testsuites>' >> "$output_file"
# Process each XML file
combined_count=0
echo "$xml_files" | while read -r file; do
if [ -f "$file" ]; then
echo " Processing: $file"
# Remove XML declaration and outer testsuites wrapper from each file
# Remove first line (XML declaration) and strip outer <testsuites>/</testsuites> tags
sed '1d; s/^<testsuites>//; s/<\/testsuites>$//' "$file" >> "$output_file" 2>/dev/null || {
echo " ⚠️ Warning: Could not process $file, skipping..."
}
combined_count=$((combined_count + 1))
fi
done
echo '</testsuites>' >> "$output_file"
echo "✅ Successfully combined $combined_count files into: $output_file"
# Verify output file was created
if [ -f "$output_file" ]; then
echo "✅ Final output file created: $output_file"
echo "📊 Output file size: $(wc -c < "$output_file") bytes"
else
echo "❌ Failed to create output file: $output_file"
exit 1
fi
}
# Call the function with provided parameters
combine_xml_results "${{ inputs.tests-dir }}" "${{ inputs.output-file }}" "${{ inputs.reports-dir }}"
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: 'Build Docker Image'
description: 'Builds a Docker image with IsaacSim and IsaacLab dependencies'
inputs:
image-tag:
description: 'Docker image tag to use'
required: true
isaacsim-base-image:
description: 'IsaacSim base image'
required: true
isaacsim-version:
description: 'IsaacSim version'
required: true
dockerfile-path:
description: 'Path to Dockerfile'
default: 'docker/Dockerfile.base'
required: false
context-path:
description: 'Build context path'
default: '.'
required: false
runs:
using: composite
steps:
- name: NGC Login
shell: sh
run: |
docker login -u \$oauthtoken -p ${{ env.NGC_API_KEY }} nvcr.io
- name: Build Docker Image
shell: sh
run: |
# Function to build Docker image
build_docker_image() {
local image_tag="$1"
local isaacsim_base_image="$2"
local isaacsim_version="$3"
local dockerfile_path="$4"
local context_path="$5"
echo "Building Docker image: $image_tag"
echo "Using Dockerfile: $dockerfile_path"
echo "Build context: $context_path"
# Build Docker image
docker buildx build --progress=plain --platform linux/amd64 \
-t isaac-lab-dev \
-t $image_tag \
--build-arg ISAACSIM_BASE_IMAGE_ARG="$isaacsim_base_image" \
--build-arg ISAACSIM_VERSION_ARG="$isaacsim_version" \
--build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim \
--build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab \
--build-arg DOCKER_USER_HOME_ARG=/root \
--cache-from type=gha \
--cache-to type=gha,mode=max \
-f $dockerfile_path \
--load $context_path
echo "✅ Docker image built successfully: $image_tag"
docker images | grep isaac-lab-dev
}
# Call the function with provided parameters
build_docker_image "${{ inputs.image-tag }}" "${{ inputs.isaacsim-base-image }}" "${{ inputs.isaacsim-version }}" "${{ inputs.dockerfile-path }}" "${{ inputs.context-path }}"
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: 'Process Test Results'
description: 'Processes XML test results and comments on PR with summary'
inputs:
results-file:
description: 'Path to the XML test results file'
required: true
default: 'reports/combined-results.xml'
github-token:
description: 'GitHub token for API access'
required: true
issue-number:
description: 'PR issue number to comment on'
required: true
repo-owner:
description: 'Repository owner'
required: true
repo-name:
description: 'Repository name'
required: true
runs:
using: composite
steps:
- name: Process Test Results and Comment on PR
uses: actions/github-script@v6
with:
github-token: ${{ inputs.github-token }}
script: |
const fs = require('fs');
let summary;
let shouldFail = false;
try {
// Read the test results XML
const xmlContent = fs.readFileSync('${{ inputs.results-file }}', 'utf8');
// Find all <testsuite ...> tags
const testsuitePattern = /<testsuite[^>]*>/g;
const testsuiteMatches = xmlContent.match(testsuitePattern);
if (testsuiteMatches && testsuiteMatches.length > 0) {
let totalTests = 0;
let totalFailures = 0;
let totalErrors = 0;
let totalSkipped = 0;
testsuiteMatches.forEach((tag, idx) => {
const testsMatch = tag.match(/tests="([^"]*)"/);
const failuresMatch = tag.match(/failures="([^"]*)"/);
const errorsMatch = tag.match(/errors="([^"]*)"/);
const skippedMatch = tag.match(/skipped="([^"]*)"/);
const tests = testsMatch ? parseInt(testsMatch[1]) : 0;
const failures = failuresMatch ? parseInt(failuresMatch[1]) : 0;
const errors = errorsMatch ? parseInt(errorsMatch[1]) : 0;
const skipped = skippedMatch ? parseInt(skippedMatch[1]) : 0;
totalTests += tests;
totalFailures += failures;
totalErrors += errors;
totalSkipped += skipped;
});
const passed = totalTests - totalFailures - totalErrors - totalSkipped;
summary = `## Combined Test Results\n\n- Total Tests: ${totalTests}\n- Passed: ${passed}\n- Failures: ${totalFailures}\n- Errors: ${totalErrors}\n- Skipped: ${totalSkipped}\n- Test Suites: ${testsuiteMatches.length}\n\n${totalFailures + totalErrors === 0 ? '✅ All tests passed!' : '❌ Some tests failed.'}\n\nDetailed test results are available in the workflow artifacts.`;
// Set flag to fail if there are any failures or errors
if (totalFailures > 0 || totalErrors > 0) {
console.error('❌ Tests failed or had errors');
shouldFail = true;
} else {
console.log('✅ All tests passed successfully');
}
} else {
summary = `## Combined Test Results\n❌ Could not parse XML structure. Raw content preview:\n\`\`\`\n${xmlContent.substring(0, 200)}...\n\`\`\`\n\nPlease check the workflow logs for more details.`;
shouldFail = true;
}
} catch (error) {
summary = `## Combined Test Results
❌ Failed to read test results: ${error.message}
Please check the workflow logs for more details.`;
shouldFail = true;
}
// Comment on the PR with the test results
await github.rest.issues.createComment({
issue_number: ${{ inputs.issue-number }},
owner: '${{ inputs.repo-owner }}',
repo: '${{ inputs.repo-name }}',
body: summary
});
// Fail the workflow after commenting if needed
if (shouldFail) {
process.exit(1);
}
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: 'Run Tests in Docker Container'
description: 'Runs pytest tests in a Docker container with GPU support and result collection'
inputs:
test-path:
description: 'Path to test directory or pytest arguments'
required: true
result-file:
description: 'Name of the result XML file'
required: true
container-name:
description: 'Name for the Docker container'
required: true
image-tag:
description: 'Docker image tag to use'
required: true
reports-dir:
description: 'Directory to store test results'
default: 'reports'
required: false
pytest-options:
description: 'Additional pytest options (e.g., -k filter)'
default: ''
required: false
filter-pattern:
description: 'Pattern to filter test files (e.g., isaaclab_tasks)'
default: ''
required: false
runs:
using: composite
steps:
- name: Run Tests in Docker Container
shell: sh
run: |
# Function to run tests in Docker container
run_tests() {
local test_path="$1"
local result_file="$2"
local container_name="$3"
local image_tag="$4"
local reports_dir="$5"
local pytest_options="$6"
local filter_pattern="$7"
echo "Running tests in: $test_path"
if [ -n "$pytest_options" ]; then
echo "With pytest options: $pytest_options"
fi
if [ -n "$filter_pattern" ]; then
echo "With filter pattern: $filter_pattern"
fi
# Create reports directory
mkdir -p "$reports_dir"
# Clean up any existing container
docker rm -f $container_name 2>/dev/null || true
# Build Docker environment variables
docker_env_vars="-e CUDA_VISIBLE_DEVICES=0 -e OMNI_KIT_ACCEPT_EULA=yes -e OMNI_KIT_DISABLE_CUP=1 -e ISAAC_SIM_HEADLESS=1 -e ISAAC_SIM_LOW_MEMORY=1 -e PYTHONUNBUFFERED=1 -e PYTHONIOENCODING=utf-8 -e TEST_RESULT_FILE=$result_file"
if [ -n "$filter_pattern" ]; then
if [[ "$filter_pattern" == not* ]]; then
# Handle "not pattern" case
exclude_pattern="${filter_pattern#not }"
docker_env_vars="$docker_env_vars -e TEST_EXCLUDE_PATTERN=$exclude_pattern"
echo "Setting exclude pattern: $exclude_pattern"
else
# Handle positive pattern case
docker_env_vars="$docker_env_vars -e TEST_FILTER_PATTERN=$filter_pattern"
echo "Setting include pattern: $filter_pattern"
fi
else
echo "No filter pattern provided"
fi
echo "Docker environment variables: '$docker_env_vars'"
# Run tests in container with error handling
echo "🚀 Starting Docker container for tests..."
if docker run --name $container_name \
--entrypoint bash --gpus all --network=host \
--security-opt=no-new-privileges:true \
--memory=$(echo "$(free -m | awk '/^Mem:/{print $2}') * 0.8 / 1" | bc)m \
--cpus=$(echo "$(nproc) * 0.8" | bc) \
--oom-kill-disable=false \
--ulimit nofile=65536:65536 \
--ulimit nproc=4096:4096 \
$docker_env_vars \
$image_tag \
-c "
set -e
cd /workspace/isaaclab
mkdir -p tests
echo 'Environment variables in container:'
echo 'TEST_FILTER_PATTERN: '\"'\"'$TEST_FILTER_PATTERN'\"'\"''
echo 'TEST_EXCLUDE_PATTERN: '\"'\"'$TEST_EXCLUDE_PATTERN'\"'\"''
echo 'TEST_RESULT_FILE: '\"'\"'$TEST_RESULT_FILE'\"'\"''
echo 'Starting pytest with path: $test_path'
/isaac-sim/python.sh -m pytest $test_path $pytest_options -v || echo 'Pytest completed with exit code: $?'
"; then
echo "✅ Docker container completed successfully"
else
echo "⚠️ Docker container failed, but continuing to copy results..."
fi
# Copy test results with error handling
echo "📋 Attempting to copy test results..."
if docker cp $container_name:/workspace/isaaclab/tests/$result_file "$reports_dir/$result_file" 2>/dev/null; then
echo "✅ Test results copied successfully"
else
echo "❌ Failed to copy specific result file, trying to copy all test results..."
if docker cp $container_name:/workspace/isaaclab/tests/ "$reports_dir/" 2>/dev/null; then
echo "✅ All test results copied successfully"
# Look for any XML files and use the first one found
if [ -f "$reports_dir/full_report.xml" ]; then
mv "$reports_dir/full_report.xml" "$reports_dir/$result_file"
echo "✅ Found and renamed full_report.xml to $result_file"
elif [ -f "$reports_dir/test-reports-"*".xml" ]; then
# Combine individual test reports if no full report exists
echo "📊 Combining individual test reports..."
echo '<?xml version="1.0" encoding="utf-8"?><testsuites>' > "$reports_dir/$result_file"
for xml_file in "$reports_dir"/test-reports-*.xml; do
if [ -f "$xml_file" ]; then
echo " Processing: $xml_file"
sed '1d; /^<testsuite/d; /^<\/testsuite/d' "$xml_file" >> "$reports_dir/$result_file" 2>/dev/null || true
fi
done
echo '</testsuites>' >> "$reports_dir/$result_file"
echo "✅ Combined individual test reports into $result_file"
else
echo "❌ No test result files found, creating fallback"
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?><testsuite name=\"$container_name\" tests=\"0\" failures=\"0\" errors=\"1\" time=\"0\"><testcase classname=\"setup\" name=\"no_results_found\"><error message=\"No test results found\">Container may have failed to generate any results</error></testcase></testsuite>" > "$reports_dir/$result_file"
fi
else
echo "❌ Failed to copy any test results, creating fallback"
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?><testsuite name=\"$container_name\" tests=\"0\" failures=\"0\" errors=\"1\" time=\"0\"><testcase classname=\"setup\" name=\"copy_failed\"><error message=\"Failed to copy test results\">Container may have failed to generate results</error></testcase></testsuite>" > "$reports_dir/$result_file"
fi
fi
# Clean up container
echo "🧹 Cleaning up Docker container..."
docker rm $container_name 2>/dev/null || echo "⚠️ Container cleanup failed, but continuing..."
}
# Call the function with provided parameters
run_tests "${{ inputs.test-path }}" "${{ inputs.result-file }}" "${{ inputs.container-name }}" "${{ inputs.image-tag }}" "${{ inputs.reports-dir }}" "${{ inputs.pytest-options }}" "${{ inputs.filter-pattern }}"
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Configuration for probot-stale - https://github.com/probot/stale # Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an Issue or Pull Request becomes stale # Number of days of inactivity before an Issue or Pull Request becomes stale
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Build and Test
on:
pull_request:
branches:
- devel
- main
# Concurrency control to prevent parallel runs on the same PR
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
checks: write
env:
NGC_API_KEY: ${{ secrets.NGC_API_KEY }}
ISAACSIM_BASE_IMAGE: ${{ vars.ISAACSIM_BASE_IMAGE }}
ISAACSIM_BASE_VERSION: ${{ vars.ISAACSIM_BASE_VERSION }}
DOCKER_IMAGE_TAG: isaac-lab-dev:${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || github.ref_name }}-${{ github.sha }}
jobs:
test-isaaclab-tasks:
runs-on: [self-hosted, gpu]
timeout-minutes: 180
continue-on-error: true
env:
CUDA_VISIBLE_DEVICES: all
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
CUDA_HOME: /usr/local/cuda
LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --gpus all --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
- name: Build Docker Image
uses: ./.github/actions/docker-build
with:
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
isaacsim-base-image: ${{ env.ISAACSIM_BASE_IMAGE }}
isaacsim-version: ${{ env.ISAACSIM_BASE_VERSION }}
- name: Run IsaacLab Tasks Tests
uses: ./.github/actions/run-tests
with:
test-path: "tools"
result-file: "isaaclab-tasks-report.xml"
container-name: "isaac-lab-tasks-test-$$"
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
pytest-options: ""
filter-pattern: "isaaclab_tasks"
- name: Copy All Test Results from IsaacLab Tasks Container
run: |
CONTAINER_NAME="isaac-lab-tasks-test-$$"
if docker ps -a | grep -q $CONTAINER_NAME; then
echo "Copying all test results from IsaacLab Tasks container..."
docker cp $CONTAINER_NAME:/workspace/isaaclab/tests/isaaclab-tasks-report.xml reports/ 2>/dev/null || echo "No test results to copy from IsaacLab Tasks container"
fi
- name: Upload IsaacLab Tasks Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: isaaclab-tasks-test-results
path: reports/isaaclab-tasks-report.xml
retention-days: 1
compression-level: 9
test-general:
runs-on: [self-hosted, gpu]
timeout-minutes: 180
env:
CUDA_VISIBLE_DEVICES: all
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
CUDA_HOME: /usr/local/cuda
LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --gpus all --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
- name: Build Docker Image
uses: ./.github/actions/docker-build
with:
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
isaacsim-base-image: ${{ env.ISAACSIM_BASE_IMAGE }}
isaacsim-version: ${{ env.ISAACSIM_BASE_VERSION }}
- name: Run General Tests
uses: ./.github/actions/run-tests
with:
test-path: "tools"
result-file: "general-tests-report.xml"
container-name: "isaac-lab-general-test-$$"
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
pytest-options: ""
filter-pattern: "not isaaclab_tasks"
- name: Copy All Test Results from General Tests Container
run: |
CONTAINER_NAME="isaac-lab-general-test-$$"
if docker ps -a | grep -q $CONTAINER_NAME; then
echo "Copying all test results from General Tests container..."
docker cp $CONTAINER_NAME:/workspace/isaaclab/tests/general-tests-report.xml reports/ 2>/dev/null || echo "No test results to copy from General Tests container"
fi
- name: Upload General Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: general-test-results
path: reports/general-tests-report.xml
retention-days: 1
compression-level: 9
combine-results:
needs: [test-isaaclab-tasks, test-general]
runs-on: [self-hosted, gpu]
if: always()
env:
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: false
- name: Configure Git Safe Directory
run: |
git config --global --add safe.directory ${{ github.workspace }}
git config --global --add safe.directory /workspace/isaaclab
git config --global --add safe.directory .
- name: Create Reports Directory
run: |
mkdir -p reports
chmod 777 reports
ls -la reports/
echo "Current user: $(whoami)"
echo "Current directory: $(pwd)"
- name: Download Test Results
uses: actions/download-artifact@v4
with:
name: isaaclab-tasks-test-results
path: /tmp/reports/
continue-on-error: true
- name: Download General Test Results
uses: actions/download-artifact@v4
with:
name: general-test-results
path: reports/
- name: Combine All Test Results
uses: ./.github/actions/combine-results
with:
tests-dir: "reports"
output-file: "reports/combined-results.xml"
- name: Upload Combined Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: pr-${{ github.event.pull_request.number }}-combined-test-results
path: reports/combined-results.xml
retention-days: 7
compression-level: 9
- name: Report Test Results
uses: dorny/test-reporter@v1
if: always()
with:
name: IsaacLab Tests
path: reports/combined-results.xml
reporter: java-junit
fail-on-error: false
- name: Process Combined Test Results
uses: ./.github/actions/process-results
with:
results-file: "reports/combined-results.xml"
github-token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
repo-owner: ${{ github.repository_owner }}
repo-name: ${{ github.event.repository.name }}
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Daily Backwards Compatibility Tests
on:
schedule:
# Run daily at 8 PM PST (4 AM UTC)
- cron: '0 4 * * *'
workflow_dispatch:
inputs:
isaacsim_version:
description: 'IsaacSim version image tag to test'
required: true
default: '4.5.0'
type: string
# Concurrency control to prevent parallel runs
concurrency:
group: daily-compatibilit y-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
env:
NGC_API_KEY: ${{ secrets.NGC_API_KEY }}
ISAACSIM_BASE_IMAGE: ${{ vars.ISAACSIM_BASE_IMAGE || 'nvcr.io/nvidia/isaac-sim' }}
ISAACSIM_DEFAULT_VERSION: '4.5.0'
DOCKER_IMAGE_TAG: isaac-lab-compat:${{ github.ref_name }}-${{ github.sha }}
jobs:
test-isaaclab-tasks-compat:
runs-on: [self-hosted, gpu]
timeout-minutes: 180
continue-on-error: true
env:
CUDA_VISIBLE_DEVICES: all
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
CUDA_HOME: /usr/local/cuda
LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --gpus all --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
- name: Build Docker Image
uses: ./.github/actions/docker-build
with:
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
isaacsim-base-image: ${{ env.ISAACSIM_BASE_IMAGE }}
isaacsim-version: ${{ github.event.inputs.isaacsim_version || env.ISAACSIM_DEFAULT_VERSION }}
- name: Run IsaacLab Tasks Tests
uses: ./.github/actions/run-tests
with:
test-path: "tools"
result-file: "isaaclab-tasks-compat-report.xml"
container-name: "isaac-lab-tasks-compat-test-$$"
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
pytest-options: ""
filter-pattern: "isaaclab_tasks"
- name: Copy All Test Results from IsaacLab Tasks Container
run: |
CONTAINER_NAME="isaac-lab-tasks-compat-test-$$"
if docker ps -a | grep -q $CONTAINER_NAME; then
echo "Copying all test results from IsaacLab Tasks container..."
docker cp $CONTAINER_NAME:/workspace/isaaclab/tests/isaaclab-tasks-compat-report.xml reports/ 2>/dev/null || echo "No test results to copy from IsaacLab Tasks container"
fi
- name: Upload IsaacLab Tasks Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: isaaclab-tasks-compat-results
path: reports/isaaclab-tasks-compat-report.xml
retention-days: 7
compression-level: 9
test-general-compat:
runs-on: [self-hosted, gpu]
timeout-minutes: 180
env:
CUDA_VISIBLE_DEVICES: all
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
CUDA_HOME: /usr/local/cuda
LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --gpus all --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
- name: Build Docker Image
uses: ./.github/actions/docker-build
with:
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
isaacsim-base-image: ${{ env.ISAACSIM_BASE_IMAGE }}
isaacsim-version: ${{ github.event.inputs.isaacsim_version || env.ISAACSIM_DEFAULT_VERSION }}
- name: Run General Tests
uses: ./.github/actions/run-tests
with:
test-path: "tools"
result-file: "general-tests-compat-report.xml"
container-name: "isaac-lab-general-compat-test-$$"
image-tag: ${{ env.DOCKER_IMAGE_TAG }}
pytest-options: ""
filter-pattern: "not isaaclab_tasks"
- name: Copy All Test Results from General Tests Container
run: |
CONTAINER_NAME="isaac-lab-general-compat-test-$$"
if docker ps -a | grep -q $CONTAINER_NAME; then
echo "Copying all test results from General Tests container..."
docker cp $CONTAINER_NAME:/workspace/isaaclab/tests/general-tests-compat-report.xml reports/ 2>/dev/null || echo "No test results to copy from General Tests container"
fi
- name: Upload General Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: general-tests-compat-results
path: reports/general-tests-compat-report.xml
retention-days: 7
compression-level: 9
combine-compat-results:
needs: [test-isaaclab-tasks-compat, test-general-compat]
runs-on: [self-hosted, gpu]
if: always()
env:
DOCKER_HOST: unix:///var/run/docker.sock
DOCKER_TLS_CERTDIR: ""
container:
image: docker:dind
options: --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: false
- name: Create Reports Directory
run: |
mkdir -p reports
chmod 777 reports
ls -la reports/
echo "Current user: $(whoami)"
echo "Current directory: $(pwd)"
- name: Download Test Results
uses: actions/download-artifact@v4
with:
name: isaaclab-tasks-compat-results
path: reports/
continue-on-error: true
- name: Download General Test Results
uses: actions/download-artifact@v4
with:
name: general-tests-compat-results
path: reports/
continue-on-error: true
- name: Combine All Test Results
uses: ./.github/actions/combine-results
with:
tests-dir: "reports"
output-file: "reports/combined-compat-results.xml"
- name: Upload Combined Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: daily-compat-${{ github.run_id }}-combined-test-results
path: reports/combined-compat-results.xml
retention-days: 30
compression-level: 9
- name: Process Combined Test Results
uses: ./.github/actions/process-results
with:
results-file: "reports/combined-compat-results.xml"
github-token: ${{ secrets.GH_TOKEN }}
issue-number: 0 # No PR for scheduled runs
repo-owner: ${{ github.repository_owner }}
repo-name: ${{ github.event.repository.name }}
notify-compatibility-status:
needs: [combine-compat-results]
runs-on: [self-hosted, gpu]
if: always()
container:
image: docker:dind
options: --security-opt=no-new-privileges:true --privileged
steps:
- name: Install Git LFS
run: |
apk update
apk add --no-cache git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: false
- name: Create Compatibility Report
run: |
ISAACSIM_VERSION_USED="${{ github.event.inputs.isaacsim_version || env.ISAACSIM_DEFAULT_VERSION }}"
echo "## Daily Backwards Compatibility Test Results" > compatibility-report.md
echo "" >> compatibility-report.md
echo "**IsaacSim Version:** $ISAACSIM_VERSION_USED" >> compatibility-report.md
echo "**Branch:** ${{ github.ref_name }}" >> compatibility-report.md
echo "**Commit:** ${{ github.sha }}" >> compatibility-report.md
echo "**Run ID:** ${{ github.run_id }}" >> compatibility-report.md
echo "" >> compatibility-report.md
echo "### Test Status:" >> compatibility-report.md
echo "- Results: ${{ needs.combine-compat-results.result }}" >> compatibility-report.md
echo "" >> compatibility-report.md
echo "### Artifacts:" >> compatibility-report.md
echo "- [Combined Test Results](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> compatibility-report.md
echo "" >> compatibility-report.md
echo "---" >> compatibility-report.md
echo "*This report was generated automatically by the daily compatibility workflow.*" >> compatibility-report.md
- name: Upload Compatibility Report
uses: actions/upload-artifact@v4
if: always()
with:
name: compatibility-report-${{ github.run_id }}
path: compatibility-report.md
retention-days: 30
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Build & deploy docs name: Build & deploy docs
on: on:
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Mirror Repository
on:
push:
branches:
- main
# Concurrency control to prevent parallel runs
concurrency:
group: mirror-repository-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
jobs:
mirror-repository:
runs-on: ubuntu-latest
timeout-minutes: 30
# Only run on specific repository
if: github.repository == 'isaac-sim/IsaacLab'
environment:
name: mirror-production
url: https://github.com/${{ vars.TARGET_REPO }}
steps:
- name: Install Git LFS
run: |
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- name: Configure Git
run: |
git config --global user.name "Isaac LAB CI Bot"
git config --global user.email "isaac-lab-ci-bot@nvidia.com"
- name: Set Target Repository URL
run: |
echo "TARGET_REPO=${{ vars.TARGET_REPO }}" >> $GITHUB_ENV
echo "TARGET_BRANCH=${{ vars.TARGET_BRANCH || 'main' }}" >> $GITHUB_ENV
- name: Mirror to Target Repository
run: |
# Remove existing target remote if it exists
git remote remove target 2>/dev/null || true
# Add target remote with authentication
git remote add target https://${{ secrets.GH_TOKEN }}@github.com/${TARGET_REPO}.git
# Fetch latest from target to avoid conflicts
git fetch target $TARGET_BRANCH 2>/dev/null || true
# Push to target repository and branch (source is always main)
git push --force target main:$TARGET_BRANCH
echo "✅ Successfully mirrored main to ${TARGET_REPO}:$TARGET_BRANCH"
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Post-Merge CI
on:
push:
branches:
- main
- devel
# Concurrency control to prevent parallel runs
concurrency:
group: postmerge-ci-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
NGC_API_KEY: ${{ secrets.NGC_API_KEY }}
ISAACSIM_BASE_IMAGE: ${{ vars.ISAACSIM_BASE_IMAGE || 'nvcr.io/nvidia/isaac-sim' }}
ISAACSIM_BASE_VERSIONS_STRING: ${{ vars.ISAACSIM_BASE_VERSIONS_STRING || 'latest-base-4.5' }}
ISAACLAB_IMAGE_NAME: ${{ vars.ISAACLAB_IMAGE_NAME || 'isaac-lab-base' }}
jobs:
build-and-push-images:
runs-on: ubuntu-latest
timeout-minutes: 180
environment:
name: postmerge-production
url: https://github.com/${{ github.repository }}
steps:
- name: Install Git LFS
run: |
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to NGC
run: |
docker login -u \$oauthtoken -p ${{ env.NGC_API_KEY }} nvcr.io
- name: Build and Push Docker Images
run: |
# Determine branch name
BRANCH_NAME="${{ github.ref_name }}"
# Replace '/' with '-' and remove any invalid characters for Docker tag
SAFE_BRANCH_NAME=$(echo $BRANCH_NAME | sed 's/[^a-zA-Z0-9._-]/-/g')
# Use "latest" if branch name is empty or only contains invalid characters
if [ -z "$SAFE_BRANCH_NAME" ]; then
SAFE_BRANCH_NAME="latest"
fi
# Get the git repository short name
REPO_SHORT_NAME="${{ github.event.repository.name }}"
if [ -z "$REPO_SHORT_NAME" ]; then
REPO_SHORT_NAME="verification"
fi
echo "Building images for branch: $BRANCH_NAME"
echo "Safe branch name: $SAFE_BRANCH_NAME"
echo "Repository name: $REPO_SHORT_NAME"
echo "IsaacSim versions: ${{ env.ISAACSIM_BASE_VERSIONS_STRING }}"
# Parse the env variable string into an array
mapfile -d ' ' -t IMAGE_BASE_VERSIONS <<< "${{ env.ISAACSIM_BASE_VERSIONS_STRING }}"
for IMAGE_BASE_VERSION in "${IMAGE_BASE_VERSIONS[@]}"; do
IMAGE_BASE_VERSION=$(echo "$IMAGE_BASE_VERSION" | tr -d '[:space:]')
# Skip empty versions
if [ -z "$IMAGE_BASE_VERSION" ]; then
continue
fi
# Combine repo short name and branch name for the tag
COMBINED_TAG="${REPO_SHORT_NAME}-${SAFE_BRANCH_NAME}-${IMAGE_BASE_VERSION}"
BUILD_TAG="${COMBINED_TAG}-b${{ github.run_number }}"
echo "Building image: ${{ env.ISAACLAB_IMAGE_NAME }}:$COMBINED_TAG"
echo "IsaacSim version: $IMAGE_BASE_VERSION"
# Build Docker image once with both tags
docker buildx build \
--platform linux/amd64 \
--progress=plain \
-t ${{ env.ISAACLAB_IMAGE_NAME }}:$COMBINED_TAG \
-t ${{ env.ISAACLAB_IMAGE_NAME }}:$BUILD_TAG \
--build-arg ISAACSIM_BASE_IMAGE_ARG=${{ env.ISAACSIM_BASE_IMAGE }} \
--build-arg ISAACSIM_VERSION_ARG=$IMAGE_BASE_VERSION \
--build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim \
--build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab \
--build-arg DOCKER_USER_HOME_ARG=/root \
--cache-from type=gha \
--cache-to type=gha,mode=max \
-f docker/Dockerfile.base \
--push .
echo "✅ Successfully built and pushed: ${{ env.ISAACLAB_IMAGE_NAME }}:$COMBINED_TAG"
echo "✅ Successfully built and pushed: ${{ env.ISAACLAB_IMAGE_NAME }}:$BUILD_TAG"
done
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
name: Run linters using pre-commit name: Run linters using pre-commit
on: on:
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
repos: repos:
- repo: https://github.com/python/black - repo: https://github.com/python/black
rev: 24.3.0 rev: 24.3.0
...@@ -55,7 +60,7 @@ repos: ...@@ -55,7 +60,7 @@ repos:
rev: v1.5.1 rev: v1.5.1
hooks: hooks:
- id: insert-license - id: insert-license
files: \.py$ files: \.(py|ya?ml)$
args: args:
# - --remove-header # Remove existing license headers. Useful when updating license. # - --remove-header # Remove existing license headers. Useful when updating license.
- --license-filepath - --license-filepath
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
services: services:
cloudxr-runtime: cloudxr-runtime:
image: ${CLOUDXR_RUNTIME_BASE_IMAGE_ARG}:${CLOUDXR_RUNTIME_VERSION_ARG} image: ${CLOUDXR_RUNTIME_BASE_IMAGE_ARG}:${CLOUDXR_RUNTIME_VERSION_ARG}
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Here we set the parts that would # Here we set the parts that would
# be re-used between services to an # be re-used between services to an
# extension field # extension field
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
services: services:
isaac-lab-base: isaac-lab-base:
environment: environment:
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
channels: channels:
- conda-forge - conda-forge
- defaults - defaults
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
retargeting: retargeting:
finger_tip_link_names: finger_tip_link_names:
- GR1T2_fourier_hand_6dof_L_thumb_distal_link - GR1T2_fourier_hand_6dof_L_thumb_distal_link
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
retargeting: retargeting:
finger_tip_link_names: finger_tip_link_names:
- GR1T2_fourier_hand_6dof_R_thumb_distal_link - GR1T2_fourier_hand_6dof_R_thumb_distal_link
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 0 seed: 0
algo: algo:
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L32 # Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L32
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 0 seed: 0
algo: algo:
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L161 # Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L161
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L32 # Reference: https://github.com/DLR-RM/rl-baselines3-zoo/blob/master/hyperparams/ppo.yml#L32
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Adapted from rsl_rl config # Adapted from rsl_rl config
seed: 42 seed: 42
policy: "MlpPolicy" policy: "MlpPolicy"
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
# Adapted from rsl_rl config # Adapted from rsl_rl config
seed: 42 seed: 42
n_timesteps: !!float 5e7 n_timesteps: !!float 5e7
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
seed: 42 seed: 42
......
# Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
params: params:
seed: 42 seed: 42
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment