# CI job image for Gitea Actions (act_runner requires Node.js in job containers). FROM node:20-bookworm RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ docker.io \ git \ && rm -rf /var/lib/apt/lists/* COPY --from=ghcr.io/astral-sh/uv:0.7.0 /uv /usr/local/bin/uv ENV UV_PYTHON_INSTALL_DIR=/opt/uv-python \ UV_LINK_MODE=copy COPY .python-version /tmp/.python-version RUN uv python install "$(cat /tmp/.python-version)" WORKDIR /app COPY pyproject.toml uv.lock .python-version ./ ENV PATH="/app/.venv/bin:${PATH}" RUN --mount=type=secret,id=uv_token \ UV_INDEX_GITEA_USERNAME=ci-bot \ UV_INDEX_GITEA_PASSWORD="$(cat /run/secrets/uv_token)" \ uv sync --all-extras --frozen --no-install-project