mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-11 12:06:57 +00:00
Adding multi-arch image support for `arm64` and `amd64`. This uses dockers new `buildx` feature, to enable further architectures more work will be required to update the `runner/Dockerfile` file to pull architecture-specific releases. The Makefile targets really should only be used for local testing and not for release, additional work to appropriately tag the release images may need to be added but for now, I've not added that logic. Fixes: #86 Signed-off-by: Michael Fornaro <20387402+xUnholy@users.noreply.github.com>
73 lines
2.1 KiB
Docker
73 lines
2.1 KiB
Docker
FROM ubuntu:18.04
|
|
|
|
ARG TARGETPLATFORM
|
|
ARG RUNNER_VERSION=2.272.0
|
|
ARG DOCKER_VERSION=19.03.12
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
RUN apt update -y \
|
|
&& apt install -y software-properties-common \
|
|
&& add-apt-repository -y ppa:git-core/ppa \
|
|
&& apt update -y \
|
|
&& apt install -y --no-install-recommends \
|
|
build-essential \
|
|
curl \
|
|
ca-certificates \
|
|
dnsutils \
|
|
ftp \
|
|
git \
|
|
iproute2 \
|
|
iputils-ping \
|
|
jq \
|
|
libunwind8 \
|
|
locales \
|
|
netcat \
|
|
openssh-client \
|
|
parallel \
|
|
rsync \
|
|
shellcheck \
|
|
sudo \
|
|
telnet \
|
|
time \
|
|
tzdata \
|
|
unzip \
|
|
upx \
|
|
wget \
|
|
zip \
|
|
zstd \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \
|
|
&& curl -L -o /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_${ARCH} \
|
|
&& chmod +x /usr/local/bin/dumb-init
|
|
|
|
# Docker download supports arm64 as aarch64 & amd64 as x86_64
|
|
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \
|
|
&& if [ "$ARCH" = "arm64" ]; then export ARCH=aarch64 ; fi \
|
|
&& if [ "$ARCH" = "amd64" ]; then export ARCH=x86_64 ; fi \
|
|
&& curl -L -o docker.tgz https://download.docker.com/linux/static/stable/${ARCH}/docker-${DOCKER_VERSION}.tgz \
|
|
&& tar zxvf docker.tgz \
|
|
&& install -o root -g root -m 755 docker/docker /usr/local/bin/docker \
|
|
&& rm -rf docker docker.tgz \
|
|
&& adduser --disabled-password --gecos "" --uid 1000 runner \
|
|
&& usermod -aG sudo runner \
|
|
&& echo "%sudo ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
|
|
|
|
# Runner download supports amd64 as x64
|
|
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \
|
|
&& if [ "$ARCH" = "amd64" ]; then export ARCH=x64 ; fi \
|
|
&& mkdir -p /runner \
|
|
&& cd /runner \
|
|
&& curl -L -o runner.tar.gz https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-${ARCH}-${RUNNER_VERSION}.tar.gz \
|
|
&& tar xzf ./runner.tar.gz \
|
|
&& rm runner.tar.gz \
|
|
&& ./bin/installdependencies.sh \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY entrypoint.sh /runner
|
|
COPY patched /runner/patched
|
|
|
|
USER runner:runner
|
|
ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]
|
|
CMD ["/runner/entrypoint.sh"]
|