mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-22 20:19:43 +00:00
fix(ci): use GHCR for Docker layer cache (Docker Hub push denied)
Docker Hub CI token can't push to new repos. GHCR works out of the box — GITHUB_TOKEN has automatic packages:write for the repo owner. - Add GHCR login step (github.actor + GITHUB_TOKEN) - Switch cache refs to ghcr.io/huggingface/lerobot/cache-benchmark - Add packages:write at job level (not workflow, per zizmor) - Keep Docker Hub login for pulling nvidia/cuda base image Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -67,6 +67,9 @@ jobs:
|
|||||||
# Isolated image: lerobot[libero] only (hf-libero, dm-control, mujoco chain)
|
# Isolated image: lerobot[libero] only (hf-libero, dm-control, mujoco chain)
|
||||||
libero-integration-test:
|
libero-integration-test:
|
||||||
name: Libero — build image + 1-episode eval
|
name: Libero — build image + 1-episode eval
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
runs-on:
|
runs-on:
|
||||||
group: aws-g6-4xlarge-plus
|
group: aws-g6-4xlarge-plus
|
||||||
env:
|
env:
|
||||||
@@ -89,10 +92,17 @@ jobs:
|
|||||||
username: ${{ secrets.DOCKERHUB_LEROBOT_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_LEROBOT_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_LEROBOT_PASSWORD }}
|
password: ${{ secrets.DOCKERHUB_LEROBOT_PASSWORD }}
|
||||||
|
|
||||||
# Build the benchmark-specific image. Layer cache pushed to Docker Hub
|
- name: Login to GHCR (for layer cache)
|
||||||
# (type=registry, no size limit — GHA cache is capped at 10GB which is
|
uses: docker/login-action@v3 # zizmor: ignore[unpinned-uses]
|
||||||
# too small for CUDA+PyTorch images). The Dockerfile separates dep-install
|
with:
|
||||||
# from source-copy, so code-only changes skip the slow uv-sync layer.
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
# Build the benchmark-specific image. Layer cache pushed to GHCR
|
||||||
|
# (type=registry, no size limit, GITHUB_TOKEN has automatic write access).
|
||||||
|
# The Dockerfile separates dep-install from source-copy, so code-only
|
||||||
|
# changes skip the slow uv-sync layer.
|
||||||
- name: Build Libero benchmark image
|
- name: Build Libero benchmark image
|
||||||
uses: docker/build-push-action@v6 # zizmor: ignore[unpinned-uses]
|
uses: docker/build-push-action@v6 # zizmor: ignore[unpinned-uses]
|
||||||
with:
|
with:
|
||||||
@@ -101,8 +111,8 @@ jobs:
|
|||||||
push: false
|
push: false
|
||||||
load: true
|
load: true
|
||||||
tags: lerobot-benchmark-libero:ci
|
tags: lerobot-benchmark-libero:ci
|
||||||
cache-from: type=registry,ref=huggingface/lerobot-benchmark-cache:libero
|
cache-from: type=registry,ref=ghcr.io/huggingface/lerobot/cache-benchmark:libero
|
||||||
cache-to: type=registry,ref=huggingface/lerobot-benchmark-cache:libero,mode=max
|
cache-to: type=registry,ref=ghcr.io/huggingface/lerobot/cache-benchmark:libero,mode=max
|
||||||
|
|
||||||
- name: Login to Hugging Face
|
- name: Login to Hugging Face
|
||||||
if: env.HF_USER_TOKEN != ''
|
if: env.HF_USER_TOKEN != ''
|
||||||
@@ -231,6 +241,9 @@ jobs:
|
|||||||
# Isolated image: lerobot[metaworld] only (metaworld==3.0.0, mujoco>=3 chain)
|
# Isolated image: lerobot[metaworld] only (metaworld==3.0.0, mujoco>=3 chain)
|
||||||
metaworld-integration-test:
|
metaworld-integration-test:
|
||||||
name: MetaWorld — build image + 1-episode eval
|
name: MetaWorld — build image + 1-episode eval
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
runs-on:
|
runs-on:
|
||||||
group: aws-g6-4xlarge-plus
|
group: aws-g6-4xlarge-plus
|
||||||
env:
|
env:
|
||||||
@@ -264,8 +277,8 @@ jobs:
|
|||||||
push: false
|
push: false
|
||||||
load: true
|
load: true
|
||||||
tags: lerobot-benchmark-metaworld:ci
|
tags: lerobot-benchmark-metaworld:ci
|
||||||
cache-from: type=registry,ref=huggingface/lerobot-benchmark-cache:metaworld
|
cache-from: type=registry,ref=ghcr.io/huggingface/lerobot/cache-benchmark:metaworld
|
||||||
cache-to: type=registry,ref=huggingface/lerobot-benchmark-cache:metaworld,mode=max
|
cache-to: type=registry,ref=ghcr.io/huggingface/lerobot/cache-benchmark:metaworld,mode=max
|
||||||
|
|
||||||
- name: Run MetaWorld smoke eval (1 episode)
|
- name: Run MetaWorld smoke eval (1 episode)
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Reference in New Issue
Block a user