| |
| |
| |
| |
|
|
| name: 'Build Docker Image' |
| description: 'Builds a Docker image with IsaacSim and UWLab 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: | |
| # Only attempt NGC login if API key is available |
| if [ -n "${{ env.NGC_API_KEY }}" ]; then |
| echo "Logging into NGC registry..." |
| docker login -u \$oauthtoken -p ${{ env.NGC_API_KEY }} nvcr.io |
| echo "✅ Successfully logged into NGC registry" |
| else |
| echo "⚠️ NGC_API_KEY not available - skipping NGC login" |
| echo "This is normal for PRs from forks or when secrets are not configured" |
| fi |
| |
| - 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" |
|
|
| |
| docker buildx build --progress=plain --platform linux/amd64 \ |
| -t uw-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 UWLAB_PATH_ARG=/workspace/uwlab \ |
| --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 uw-lab-dev |
| } |
|
|
| |
| build_docker_image "${{ inputs.image-tag }}" "${{ inputs.isaacsim-base-image }}" "${{ inputs.isaacsim-version }}" "${{ inputs.dockerfile-path }}" "${{ inputs.context-path }}" |
|
|