From bcfcedd72eef6f955b24859415e616d5924a8c35 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 8 Apr 2026 19:22:16 +0200 Subject: [PATCH] fix(ci): use root container chmod + python3 for benchmark artifact dirs - Replace host-side chmod (unreliable across Docker UID boundary) with a dedicated 'docker run --user root' step that chmods from inside the container before the eval run mounts the path. - Use python3 instead of python (CI runners only have python3). - Add if: always() to parse/upload steps so metrics are captured even on eval failure. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/benchmark_tests.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/benchmark_tests.yml b/.github/workflows/benchmark_tests.yml index 1b2eabb8f..b2a37a9b3 100644 --- a/.github/workflows/benchmark_tests.yml +++ b/.github/workflows/benchmark_tests.yml @@ -100,9 +100,17 @@ jobs: lerobot-benchmark-libero:ci \ bash -c "hf auth login --token '$HF_USER_TOKEN' --add-to-git-credential && hf auth whoami" + - name: Prepare Libero artifact directory + run: | + mkdir -p /tmp/libero-artifacts + # Grant write access from inside the container to handle any host/container UID mismatch. + docker run --rm --user root \ + -v /tmp/libero-artifacts:/artifacts \ + lerobot-benchmark-libero:ci \ + bash -c "mkdir -p /artifacts/videos && chmod -R 777 /artifacts" + - name: Run Libero smoke eval (1 episode) run: | - mkdir -p /tmp/libero-artifacts && chmod 777 /tmp/libero-artifacts docker run --rm --gpus all \ --shm-size=4g \ -e HF_HOME=/tmp/hf \ @@ -128,7 +136,7 @@ jobs: - name: Parse Libero eval metrics if: always() run: | - python scripts/ci/parse_eval_metrics.py \ + python3 scripts/ci/parse_eval_metrics.py \ --artifacts-dir /tmp/libero-artifacts \ --env libero \ --task libero_spatial \ @@ -181,9 +189,17 @@ jobs: cache-from: type=local,src=/tmp/.buildx-cache-metaworld cache-to: type=local,dest=/tmp/.buildx-cache-metaworld,mode=max + - name: Prepare MetaWorld artifact directory + run: | + mkdir -p /tmp/metaworld-artifacts + # Grant write access from inside the container to handle any host/container UID mismatch. + docker run --rm --user root \ + -v /tmp/metaworld-artifacts:/artifacts \ + lerobot-benchmark-metaworld:ci \ + bash -c "mkdir -p /artifacts/videos && chmod -R 777 /artifacts" + - name: Run MetaWorld smoke eval (1 episode) run: | - mkdir -p /tmp/metaworld-artifacts && chmod 777 /tmp/metaworld-artifacts docker run --rm --gpus all \ --shm-size=4g \ -e HF_HOME=/tmp/hf \ @@ -209,7 +225,7 @@ jobs: - name: Parse MetaWorld eval metrics if: always() run: | - python scripts/ci/parse_eval_metrics.py \ + python3 scripts/ci/parse_eval_metrics.py \ --artifacts-dir /tmp/metaworld-artifacts \ --env metaworld \ --task metaworld-push-v3 \