forked from actions/actions-runner-controller
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: dind 22.04 runner (actions#2030)
* feat: dind 22.04 runner * chore: remove zstd * chore: remove test * chore: add missing make targets and bcump * runner: Add missing iptables package to dind ubuntu 22.04 * feat: use new ids * feat: use new ids * Revert "feat: use new ids" This reverts commit 2e4e2bb. Co-authored-by: toast-gear <toast-gear@users.noreply.github.com> Co-authored-by: Yusuke Kuoka <ykuoka@gmail.com>
- Loading branch information
1 parent
ecd7531
commit 775dc60
Showing
2 changed files
with
141 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
FROM ubuntu:22.04 | ||
|
||
ARG TARGETPLATFORM | ||
ARG RUNNER_VERSION=2.299.1 | ||
ARG RUNNER_CONTAINER_HOOKS_VERSION=0.1.3 | ||
# Docker and Docker Compose arguments | ||
ARG CHANNEL=stable | ||
ARG DOCKER_VERSION=20.10.21 | ||
ARG DOCKER_COMPOSE_VERSION=v2.12.2 | ||
ARG DUMB_INIT_VERSION=1.2.5 | ||
ARG RUNNER_USER_UID=1001 | ||
ARG DOCKER_GROUP_GID=121 | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
RUN apt-get update -y \ | ||
&& apt-get install -y software-properties-common \ | ||
&& add-apt-repository -y ppa:git-core/ppa \ | ||
&& apt-get update -y \ | ||
&& apt-get install -y --no-install-recommends \ | ||
curl \ | ||
ca-certificates \ | ||
git \ | ||
git-lfs \ | ||
iptables \ | ||
jq \ | ||
supervisor \ | ||
software-properties-common \ | ||
sudo \ | ||
unzip \ | ||
zip \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Runner user | ||
RUN adduser --disabled-password --gecos "" --uid $RUNNER_USER_UID runner \ | ||
&& groupadd docker --gid $DOCKER_GROUP_GID \ | ||
&& usermod -aG sudo runner \ | ||
&& usermod -aG docker runner \ | ||
&& echo "%sudo ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers \ | ||
&& echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >> /etc/sudoers | ||
|
||
ENV HOME=/home/runner | ||
|
||
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \ | ||
&& if [ "$ARCH" = "arm64" ]; then export ARCH=aarch64 ; fi \ | ||
&& if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "i386" ]; then export ARCH=x86_64 ; fi \ | ||
&& curl -fLo /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_${ARCH} \ | ||
&& chmod +x /usr/bin/dumb-init | ||
|
||
ENV RUNNER_ASSETS_DIR=/runnertmp | ||
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \ | ||
&& if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "i386" ]; then export ARCH=x64 ; fi \ | ||
&& mkdir -p "$RUNNER_ASSETS_DIR" \ | ||
&& cd "$RUNNER_ASSETS_DIR" \ | ||
&& curl -fLo 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 -f runner.tar.gz \ | ||
&& ./bin/installdependencies.sh \ | ||
# libyaml-dev is required for ruby/setup-ruby action. | ||
# It is installed after installdependencies.sh and before removing /var/lib/apt/lists | ||
# to avoid rerunning apt-update on its own. | ||
&& apt-get install -y libyaml-dev \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
ENV RUNNER_TOOL_CACHE=/opt/hostedtoolcache | ||
RUN mkdir /opt/hostedtoolcache \ | ||
&& chgrp docker /opt/hostedtoolcache \ | ||
&& chmod g+rwx /opt/hostedtoolcache | ||
|
||
RUN cd "$RUNNER_ASSETS_DIR" \ | ||
&& curl -fLo runner-container-hooks.zip https://github.com/actions/runner-container-hooks/releases/download/v${RUNNER_CONTAINER_HOOKS_VERSION}/actions-runner-hooks-k8s-${RUNNER_CONTAINER_HOOKS_VERSION}.zip \ | ||
&& unzip ./runner-container-hooks.zip -d ./k8s \ | ||
&& rm -f runner-container-hooks.zip | ||
|
||
RUN set -vx; \ | ||
export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \ | ||
&& if [ "$ARCH" = "arm64" ]; then export ARCH=aarch64 ; fi \ | ||
&& if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "i386" ]; then export ARCH=x86_64 ; fi \ | ||
&& curl -fLo docker.tgz https://download.docker.com/linux/static/${CHANNEL}/${ARCH}/docker-${DOCKER_VERSION}.tgz \ | ||
&& tar zxvf docker.tgz \ | ||
&& install -o root -g root -m 755 docker/* /usr/bin/ \ | ||
&& rm -rf docker docker.tgz | ||
|
||
RUN export ARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) \ | ||
&& if [ "$ARCH" = "arm64" ]; then export ARCH=aarch64 ; fi \ | ||
&& if [ "$ARCH" = "amd64" ] || [ "$ARCH" = "i386" ]; then export ARCH=x86_64 ; fi \ | ||
&& curl -fLo /usr/bin/docker-compose https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-${ARCH} \ | ||
&& chmod +x /usr/bin/docker-compose | ||
|
||
# We place the scripts in `/usr/bin` so that users who extend this image can | ||
# override them with scripts of the same name placed in `/usr/local/bin`. | ||
COPY entrypoint-dind.sh startup.sh logger.sh wait.sh graceful-stop.sh update-status /usr/bin/ | ||
COPY supervisor/ /etc/supervisor/conf.d/ | ||
RUN chmod +x /usr/bin/entrypoint-dind.sh /usr/bin/startup.sh | ||
|
||
# Copy the docker shim which propagates the docker MTU to underlying networks | ||
# to replace the docker binary in the PATH. | ||
COPY docker-shim.sh /usr/local/bin/docker | ||
|
||
# Configure hooks folder structure. | ||
COPY hooks /etc/arc/hooks/ | ||
|
||
VOLUME /var/lib/docker | ||
|
||
# Add the Python "User Script Directory" to the PATH | ||
ENV PATH="${PATH}:${HOME}/.local/bin" | ||
ENV ImageOS=ubuntu22 | ||
|
||
RUN echo "PATH=${PATH}" > /etc/environment \ | ||
&& echo "ImageOS=${ImageOS}" >> /etc/environment | ||
|
||
# No group definition, as that makes it harder to run docker. | ||
USER runner | ||
|
||
ENTRYPOINT ["/bin/bash", "-c"] | ||
CMD ["entrypoint-dind.sh"] |