diff --git a/.github/workflows/test-docker-build.yml b/.github/workflows/test-docker-build.yml new file mode 100644 index 00000000..f1c720f3 --- /dev/null +++ b/.github/workflows/test-docker-build.yml @@ -0,0 +1,109 @@ +# Inspired by +# https://github.com/huggingface/peft/blob/main/.github/workflows/test-docker-build.yml +name: Test Docker builds (PR) + +on: + pull_request: + branches: + - main + paths: + # Run only when DockerFile files are modified + - "docker/**" + +env: + PYTHON_VERSION: "3.10" + +jobs: + get_changed_files: + name: "Get all modified Dockerfiles" + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v44 + with: + files: docker/** + json: "true" + + - name: Run step if only the files listed above change + if: steps.changed-files.outputs.any_changed == 'true' + id: set-matrix + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + echo "matrix=${{ steps.changed-files.outputs.all_changed_files}}" >> $GITHUB_OUTPUT + + + build_modified_dockerfiles: + name: "Build all modified Docker images" + needs: get_changed_files + runs-on: ubuntu-latest + if: ${{ needs.get_changed_files.outputs.matrix }} != '' + strategy: + fail-fast: false + matrix: + docker-file: ${{ fromJson(needs.get_changed_files.outputs.matrix) }} + steps: + - name: Cleanup disk + run: | + sudo df -h + # sudo ls -l /usr/local/lib/ + # sudo ls -l /usr/share/ + sudo du -sh /usr/local/lib/ + sudo du -sh /usr/share/ + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/share/dotnet + sudo du -sh /usr/local/lib/ + sudo du -sh /usr/share/ + sudo df -h + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Check out code + uses: actions/checkout@v4 + + # HACK(aliberts): to be removed for release + # ----------------------------------------- + - name: Checkout gym-aloha + uses: actions/checkout@v4 + with: + repository: huggingface/gym-aloha + path: envs/gym-aloha + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Checkout gym-xarm + uses: actions/checkout@v4 + with: + repository: huggingface/gym-xarm + path: envs/gym-xarm + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Checkout gym-pusht + uses: actions/checkout@v4 + with: + repository: huggingface/gym-pusht + path: envs/gym-pusht + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Change envs dependencies as local path + run: python .github/scripts/dep_build.py + # ----------------------------------------- + + - name: Build Docker image + uses: docker/build-push-action@v5 + with: + file: ${{ matrix.docker-file }} + context: . + push: False + build-args: PYTHON_VERSION=${{ env.PYTHON_VERSION }} diff --git a/docker/lerobot-gpu/Dockerfile b/docker/lerobot-gpu/Dockerfile index 2c36b484..ab78937c 100644 --- a/docker/lerobot-gpu/Dockerfile +++ b/docker/lerobot-gpu/Dockerfile @@ -4,7 +4,6 @@ FROM nvidia/cuda:12.4.1-base-ubuntu22.04 ARG PYTHON_VERSION=3.10 ARG DEBIAN_FRONTEND=noninteractive - # Install apt dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential cmake \ @@ -12,7 +11,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ python${PYTHON_VERSION} python${PYTHON_VERSION}-venv \ && apt-get clean && rm -rf /var/lib/apt/lists/* - # Create virtual environment RUN ln -s /usr/bin/python${PYTHON_VERSION} /usr/bin/python RUN python -m venv /opt/venv