From 798cf8611d947b5abc3ad39136edf4aaf3b76ae3 Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Thu, 26 Mar 2026 12:08:16 -0500 Subject: [PATCH] feat: make ci-base a comprehensive runner image like ubuntu-latest Add Node.js 20 LTS (required for all Forgejo JS actions), Python 3.12, Ruby, Go 1.22, Docker CLI, kubectl, Helm, yq, gh, zstd, and common build/system tools. Mirrors GitHub ubuntu-24.04 hosted runner capability so jobs work without needing container: overrides for standard tasks. --- servers/legion/k8s/gitea-runner/Dockerfile | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/servers/legion/k8s/gitea-runner/Dockerfile b/servers/legion/k8s/gitea-runner/Dockerfile index 3b14e89..ef8b36f 100644 --- a/servers/legion/k8s/gitea-runner/Dockerfile +++ b/servers/legion/k8s/gitea-runner/Dockerfile @@ -2,10 +2,85 @@ FROM gitea/act_runner:latest AS runner-bin FROM ubuntu:24.04 +ENV DEBIAN_FRONTEND=noninteractive + COPY --from=runner-bin /usr/local/bin/act_runner /usr/local/bin/act_runner +# Core system tools RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ + wget \ git \ + gnupg \ + lsb-release \ + unzip \ + zip \ + xz-utils \ + tar \ + rsync \ + file \ + jq \ + openssh-client \ + make \ + build-essential \ + pkg-config \ && rm -rf /var/lib/apt/lists/* + +# Node.js 20 LTS — required for all Forgejo JS actions (checkout, upload-artifact, cache, etc.) +RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g yarn \ + && rm -rf /var/lib/apt/lists/* + +# Python 3.12 +RUN apt-get update && apt-get install -y --no-install-recommends \ + python3 \ + python3-pip \ + python3-venv \ + python3-dev \ + && ln -sf /usr/bin/python3 /usr/local/bin/python \ + && rm -rf /var/lib/apt/lists/* + +# Ruby +RUN apt-get update && apt-get install -y --no-install-recommends \ + ruby \ + ruby-dev \ + ruby-bundler \ + && rm -rf /var/lib/apt/lists/* + +# Go 1.22 +RUN curl -fsSL https://go.dev/dl/go1.22.10.linux-amd64.tar.gz | tar -C /usr/local -xz +ENV PATH="/usr/local/go/bin:${PATH}" + +# Docker CLI (not daemon — socket is mounted from host) +RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \ + && echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ + > /etc/apt/sources.list.d/docker.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends docker-ce-cli \ + && rm -rf /var/lib/apt/lists/* + +# kubectl +RUN curl -fsSL "https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ + -o /usr/local/bin/kubectl \ + && chmod +x /usr/local/bin/kubectl + +# Helm +RUN curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash + +# yq +RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ + && chmod +x /usr/local/bin/yq + +# GitHub CLI (gh) — for interacting with GitHub mirrors +RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \ + | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ + && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ + > /etc/apt/sources.list.d/github-cli.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends gh \ + && rm -rf /var/lib/apt/lists/* + +# zstd — required by actions/cache +RUN apt-get update && apt-get install -y --no-install-recommends zstd && rm -rf /var/lib/apt/lists/*