627d448f6f
nodesource setup_20.x on Ubuntu 24.04 installs Ubuntu's nodejs 18 (no npm) instead of Node 20. Binary tarball is reliable and includes npm.
88 lines
2.8 KiB
Docker
88 lines
2.8 KiB
Docker
FROM data.forgejo.org/forgejo/runner:11 AS runner-bin
|
|
|
|
FROM ubuntu:24.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
COPY --from=runner-bin /bin/forgejo-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 \
|
|
software-properties-common \
|
|
zstd \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Node.js 20 LTS via binary tarball (nodesource apt repo is unreliable on Ubuntu 24.04)
|
|
RUN NODE_VERSION=20.19.1 \
|
|
&& curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" \
|
|
| tar -xJ -C /usr/local --strip-components=1 \
|
|
&& node --version \
|
|
&& npm --version \
|
|
&& npm install -g yarn
|
|
|
|
# Python 3 + pip + venv
|
|
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 + Bundler
|
|
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 (socket 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 noble 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
|
|
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/*
|