CoolFace
Apppublic

hanabhi/gridworld-env

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
docker-build.yml154 linesDownload Raw Back to workflows
1name: Build and Push Docker Images2 3on:4  push:5    branches:6      - main7    paths:8      - 'envs/**/Dockerfile'9      - 'envs/**/*.py'10      - '.github/workflows/docker-build.yml'11  workflow_dispatch:  # Allow manual trigger12 13env:14  REGISTRY: ghcr.io15  IMAGE_PREFIX: ${{ github.repository_owner }}/openenv16 17jobs:18  # Job 1: Build base image first19  build-base:20    runs-on: ubuntu-latest21    permissions:22      contents: read23      packages: write24 25    steps:26      - name: Checkout code27        uses: actions/checkout@v428 29      - name: Set up Docker Buildx30        uses: docker/setup-buildx-action@v331 32      - name: Log in to GHCR33        uses: docker/login-action@v334        with:35          registry: ${{ env.REGISTRY }}36          username: ${{ github.actor }}37          password: ${{ secrets.GITHUB_TOKEN }}38 39      - name: Extract metadata for base image40        id: meta41        uses: docker/metadata-action@v542        with:43          images: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-base44          tags: |45            type=raw,value=latest,enable={{is_default_branch}}46            type=sha47 48      - name: Build and push base image49        uses: docker/build-push-action@v550        with:51          context: .52          file: src/openenv/core/containers/images/Dockerfile53          push: true54          platforms: linux/amd64,linux/arm6455          tags: ${{ steps.meta.outputs.tags }}56          labels: ${{ steps.meta.outputs.labels }}57          cache-from: type=gha,scope=base58          cache-to: type=gha,mode=max,scope=base59  # Job 2: Build environment images (depends on base)60  build-envs:61    runs-on: ubuntu-latest62    needs: build-base  # Wait for base image to be built63    permissions:64      contents: read65      packages: write66 67    strategy:68      matrix:69        image:70          - name: echo-env71            dockerfile: envs/echo_env/server/Dockerfile72            context: envs/echo_env73          - name: chat-env74            dockerfile: envs/chat_env/server/Dockerfile75            context: envs/chat_env76          - name: coding-env77            dockerfile: envs/coding_env/server/Dockerfile78          - name: sumo-rl-env79            dockerfile: envs/sumo_rl_env/server/Dockerfile80            context: envs/sumo_rl_env81          - name: atari-env82            dockerfile: envs/atari_env/server/Dockerfile83            context: envs/atari_env84          - name: git-env85            dockerfile: envs/git_env/server/Dockerfile86            context: envs/git_env87          - name: connect4_env88            dockerfile: envs/connect4_env/server/Dockerfile89            context: envs/connect4_env90          - name: chess-env91            dockerfile: envs/chess_env/server/Dockerfile92            context: envs/chess_env93          - name: tbench2-env94            dockerfile: envs/tbench2_env/server/Dockerfile95            context: envs/tbench2_env96          - name: textarena-env97            dockerfile: envs/textarena_env/server/Dockerfile98            context: envs/textarena_env99          - name: browsergym-env100            dockerfile: envs/browsergym_env/server/Dockerfile101            context: envs/browsergym_env102          - name: snake-env103            dockerfile: envs/snake_env/server/Dockerfile104            context: envs/snake_env105          - name: unity-env106            dockerfile: envs/unity_env/server/Dockerfile107            context: envs/unity_env108          - name: openapp-env109            dockerfile: envs/openapp_env/server/Dockerfile110            context: envs/openapp_env111          - name: maze-env112            dockerfile: envs/maze_env/server/Dockerfile113            context: envs/maze_env114          - name: openspiel-env115            dockerfile: envs/openspiel_env/server/Dockerfile116            context: envs/openspiel_env117 118    steps:119      - name: Checkout code120        uses: actions/checkout@v4121 122      - name: Set up Docker Buildx123        uses: docker/setup-buildx-action@v3124 125      - name: Log in to GHCR126        uses: docker/login-action@v3127        with:128          registry: ${{ env.REGISTRY }}129          username: ${{ github.actor }}130          password: ${{ secrets.GITHUB_TOKEN }}131 132      - name: Extract metadata133        id: meta134        uses: docker/metadata-action@v5135        with:136          images: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-${{ matrix.image.name }}137          tags: |138            type=raw,value=latest,enable={{is_default_branch}}139            type=sha140 141      - name: Build and push environment image142        uses: docker/build-push-action@v5143        with:144          context: ${{ matrix.image.context || '.' }}145          file: ${{ matrix.image.dockerfile }}146          push: true147          platforms: linux/amd64,linux/arm64148          tags: ${{ steps.meta.outputs.tags }}149          labels: ${{ steps.meta.outputs.labels }}150          cache-from: type=gha,scope=${{ matrix.image.name }}151          cache-to: type=gha,mode=max,scope=${{ matrix.image.name }}152          build-args: |153            BASE_IMAGE=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-base:latest154