2026-01-25 19:56:17 -08:00
|
|
|
# Forgejo Actions Job Execution Image
|
|
|
|
|
#
|
|
|
|
|
# This image is used as the job execution environment for Forgejo Actions.
|
|
|
|
|
# The host runner daemon creates containers from this image to run workflow steps.
|
|
|
|
|
#
|
|
|
|
|
# Includes: Node.js (for GitHub Actions), Docker CLI, git, and common CI tools.
|
|
|
|
|
#
|
|
|
|
|
# Usage: Configure runner with label like:
|
|
|
|
|
# docker:docker://registry.ops.eblu.me/blumeops/forgejo-runner:latest
|
|
|
|
|
|
|
|
|
|
FROM debian:bookworm-slim
|
|
|
|
|
|
|
|
|
|
ARG TARGETARCH
|
|
|
|
|
|
|
|
|
|
# Install base dependencies
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
|
ca-certificates \
|
|
|
|
|
curl \
|
|
|
|
|
git \
|
|
|
|
|
jq \
|
|
|
|
|
gnupg \
|
|
|
|
|
lsb-release \
|
|
|
|
|
xz-utils \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-02-03 09:19:58 -08:00
|
|
|
# Install Node.js 24.x LTS (required for actions/checkout@v4 and Quartz builds)
|
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
|
2026-01-25 19:56:17 -08:00
|
|
|
&& apt-get install -y --no-install-recommends nodejs \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
|
# Install Docker CLI (for container builds - daemon accessed via socket mount)
|
2026-01-30 11:11:19 -08:00
|
|
|
# and skopeo (for pushing images to zot registry - Docker 27 manifest compat issues)
|
2026-01-25 19:56:17 -08:00
|
|
|
RUN install -m 0755 -d /etc/apt/keyrings \
|
|
|
|
|
&& curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
|
|
|
|
|
&& chmod a+r /etc/apt/keyrings/docker.asc \
|
|
|
|
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list \
|
|
|
|
|
&& apt-get update \
|
2026-01-30 11:11:19 -08:00
|
|
|
&& apt-get install -y --no-install-recommends docker-ce-cli skopeo \
|
2026-01-25 19:56:17 -08:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-02-03 16:58:03 -08:00
|
|
|
# Install uv (Python package runner for towncrier)
|
|
|
|
|
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
|
|
|
|
&& mv /root/.local/bin/uv /usr/local/bin/uv \
|
|
|
|
|
&& mv /root/.local/bin/uvx /usr/local/bin/uvx
|
|
|
|
|
|
|
|
|
|
# Install argocd CLI (for syncing apps from workflows)
|
2026-02-03 17:11:25 -08:00
|
|
|
# Use dpkg --print-architecture as fallback since TARGETARCH may be empty in single-platform builds
|
|
|
|
|
RUN ARCH="${TARGETARCH:-$(dpkg --print-architecture)}" \
|
|
|
|
|
&& curl -fsSL -o /usr/local/bin/argocd \
|
|
|
|
|
"https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-${ARCH}" \
|
|
|
|
|
&& chmod +x /usr/local/bin/argocd \
|
|
|
|
|
&& argocd version --client
|
2026-02-03 16:58:03 -08:00
|
|
|
|
2026-01-25 19:56:17 -08:00
|
|
|
# Default to bash
|
|
|
|
|
CMD ["/bin/bash"]
|