Skip to content

fix(training): guard HF dataset snapshots with parent-commit CAS #360

fix(training): guard HF dataset snapshots with parent-commit CAS

fix(training): guard HF dataset snapshots with parent-commit CAS #360

Workflow file for this run

# =============================================================================
# OmniMedical Suite — Docker Build & Push to GHCR
# =============================================================================
# Triggers when docker-related files change on main or via pull_request.
#
# Behavior:
# - On push to main: builds and PUSHES images to GHCR
# - On pull_request: builds WITHOUT pushing (validates that both production
# Dockerfiles build successfully before merge)
#
# Production images built:
# - deploy/Dockerfile.gradio (Gradio HITL interface, target=production)
# - deploy/Dockerfile.api (FastAPI production image)
# =============================================================================
name: Docker
on:
push:
branches: [main]
paths:
- "deploy/**"
- "packages/**"
- "app/**"
- "hf-space/**"
- "src/**"
- "requirements.txt"
- "requirements/**"
- "pyproject.toml"
- "alembic.ini"
- "migrations/**"
- "scripts/setup_dictionaries.sh"
- ".dockerignore"
- ".github/workflows/docker.yml"
pull_request:
paths:
- "deploy/**"
- "packages/**"
- "app/**"
- "hf-space/**"
- "src/**"
- "requirements.txt"
- "requirements/**"
- "pyproject.toml"
- "alembic.ini"
- "migrations/**"
- "scripts/setup_dictionaries.sh"
- ".dockerignore"
- ".github/workflows/docker.yml"
env:
REGISTRY: ghcr.io
IMAGE_PREFIX: ghcr.io/${{ github.repository }}
jobs:
detect-changes:
name: Detect Changes
runs-on: ubuntu-latest
outputs:
gradio: ${{ steps.filter.outputs.gradio }}
api: ${{ steps.filter.outputs.api }}
steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive
- name: Detect changed paths
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
gradio:
- "deploy/Dockerfile.gradio"
- "deploy/Dockerfile"
- "hf-space/**"
- "packages/**"
- "src/**"
- "requirements.txt"
- "requirements/**"
- "pyproject.toml"
- "scripts/setup_dictionaries.sh"
- ".dockerignore"
- ".github/workflows/docker.yml"
api:
- "deploy/Dockerfile.api"
- "deploy/Dockerfile"
- "app/**"
- "packages/**"
- "src/**"
- "migrations/**"
- "alembic.ini"
- "requirements.txt"
- "requirements/**"
- "pyproject.toml"
- "scripts/setup_dictionaries.sh"
- ".dockerignore"
- ".github/workflows/docker.yml"
docker-gradio:
name: Docker Build (Gradio)
runs-on: ubuntu-latest
needs: detect-changes
if: needs.detect-changes.outputs.gradio == 'true'
permissions:
contents: read
packages: write
steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install pinned specialty translation memory
run: |
chmod +x scripts/setup_dictionaries.sh
bash scripts/setup_dictionaries.sh malek-dictionaries-v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry (push only)
if: github.event_name == 'push'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_PREFIX }}/gradio
tags: |
type=sha,prefix=
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push Gradio image
uses: docker/build-push-action@v6
with:
context: .
file: deploy/Dockerfile.gradio
target: production
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=gradio
cache-to: type=gha,mode=max,scope=gradio
docker-api:
name: Docker Build (API)
runs-on: ubuntu-latest
needs: detect-changes
if: needs.detect-changes.outputs.api == 'true'
permissions:
contents: read
packages: write
steps:
- name: Checkout repository (with submodules)
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install pinned specialty translation memory
run: |
chmod +x scripts/setup_dictionaries.sh
bash scripts/setup_dictionaries.sh malek-dictionaries-v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry (push only)
if: github.event_name == 'push'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_PREFIX }}/api
tags: |
type=sha,prefix=
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push API image
uses: docker/build-push-action@v6
with:
context: .
file: deploy/Dockerfile.api
push: ${{ github.event_name == 'push' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=api
cache-to: type=gha,mode=max,scope=api