fix(docker): skip model downloads in CI to prevent HuggingFace CDN 504s

The Docker Build Test was consistently failing because HuggingFace CDN
returns 504 Gateway Timeout when downloading the LaMa ONNX model (~200MB)
from GitHub Actions runners. Model availability is an external dependency,
not something CI can control.

Added SKIP_MODEL_DOWNLOADS build arg (default: false). When set to true,
the download_models.py step is skipped entirely. CI only needs to verify
the image structure builds — Python deps install, Node build runs, app
code is copied — not that every ML model CDN is reachable.

Production builds (docker build without the arg) still download all models
as before.
This commit is contained in:
Siddharth Kumar Sah
2026-04-14 23:02:16 +08:00
parent fb6cff0fec
commit a8ce0a7559
2 changed files with 10 additions and 1 deletions
+1
View File
@@ -93,5 +93,6 @@ jobs:
file: docker/Dockerfile
push: false
tags: ashim:ci
build-args: SKIP_MODEL_DOWNLOADS=true
cache-from: type=gha,scope=unified
cache-to: type=gha,mode=max,scope=unified
+9 -1
View File
@@ -63,6 +63,8 @@ ARG TARGETARCH
FROM base-${TARGETOS}-${TARGETARCH} AS production
ARG TARGETARCH
# Set to "true" to skip model downloads (for CI builds that just test the image structure)
ARG SKIP_MODEL_DOWNLOADS=false
# Install Node.js on amd64 (CUDA base has no Node; arm64 base already has it)
RUN if [ "$TARGETARCH" = "amd64" ]; then \
@@ -147,8 +149,14 @@ RUN /opt/venv/bin/pip install numpy==1.26.4
# Note: on amd64, paddlepaddle-gpu can't import without the CUDA driver (only
# available at runtime). The download script gracefully skips PaddleOCR model
# pre-download in this case; models download on first use at runtime instead.
# In CI (SKIP_MODEL_DOWNLOADS=true), skip downloads — the image structure is
# what matters for the build test; models are verified in integration tests.
COPY docker/download_models.py /tmp/download_models.py
RUN /opt/venv/bin/python3 /tmp/download_models.py && rm -f /tmp/download_models.py
RUN if [ "$SKIP_MODEL_DOWNLOADS" = "true" ]; then \
echo "Skipping model downloads (CI build)"; \
else \
/opt/venv/bin/python3 /tmp/download_models.py; \
fi && rm -f /tmp/download_models.py
WORKDIR /app