#syntax=docker/dockerfile:1.4 # see https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md # see https://docs.docker.com/engine/reference/builder/#syntax # # SPDX-FileCopyrightText: © Vegard IT GmbH (https://vegardit.com) # SPDX-FileContributor: Sebastian Thomschke # SPDX-License-Identifier: Apache-2.0 # SPDX-ArtifactOfProjectHomePage: https://github.com/vegardit/docker-gitea-act-runner # # https://hub.docker.com/_/debian?tab=tags&name=stable-slim ###################### # runtime image base ###################### FROM debian:stable-slim as runtime-base-image LABEL maintainer="Vegard IT GmbH (vegardit.com)" USER root SHELL ["/bin/bash", "-c"] ARG BASE_LAYER_CACHE_KEY ARG DEBIAN_FRONTEND=noninteractive ARG LC_ALL=C RUN --mount=type=bind,source=.shared,target=/mnt/shared <> /etc/sudoers /mnt/shared/cmd/debian-cleanup.sh EOF ###################### # build image ###################### # https://hub.docker.com/_/python?tab=tags&name=3-slim FROM debian:stable-slim AS build-image USER root SHELL ["/bin/bash", "-c"] ARG BASE_LAYER_CACHE_KEY ARG DEBIAN_FRONTEND=noninteractive ARG LC_ALL=C ARG INSTALL_SUPPORT_TOOLS=0 ARG ACT_RUNNER_DOWNLOAD_URL=https://dl.gitea.com/act_runner/main/act_runner-main-linux-amd64 ARG UPX_COMPRESS=true RUN --mount=type=bind,source=.shared,target=/mnt/shared <)docker-\d+.\d+.\d+.tgz(?=)' | tail -1) docker_cli_download_url=https://download.docker.com/linux/static/stable/x86_64/$docker_cli_package echo "Downloading [$docker_cli_download_url]..." curl -fL $docker_cli_download_url | tar zxv -C /usr/bin --strip-components=1 docker/docker ls -l /usr/bin/docker echo "Stripping..." strip --strip-unneeded /usr/bin/docker ls -l /usr/bin/docker if [[ $UPX_COMPRESS == "true" ]]; then /opt/upx/upx -9 /usr/bin/docker fi docker --version echo "#################################################" echo "Downloading Gitea act runner..." echo "#################################################" curl -fsSL $ACT_RUNNER_DOWNLOAD_URL -o /usr/local/bin/act_runner chmod 755 /usr/local/bin/act_runner ls -l /usr/local/bin/act_runner echo "Stripping..." strip --strip-unneeded /usr/local/bin/act_runner ls -l /usr/local/bin/act_runner if [[ $UPX_COMPRESS == "true" ]]; then /opt/upx/upx -9 /usr/local/bin/act_runner fi act_runner --version EOF ###################### # runtime image ###################### FROM runtime-base-image COPY --from=build-image /usr/local/bin/act_runner /usr/local/bin/act_runner ARG BUILD_DATE ARG GIT_BRANCH ARG GIT_COMMIT_HASH ARG GIT_COMMIT_DATE ARG GIT_REPO_URL LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.build-date=$BUILD_DATE \ org.label-schema.vcs-ref=$GIT_COMMIT_HASH \ org.label-schema.vcs-url=$GIT_REPO_URL # Default configuration: can be overridden at the docker command line ENV \ INIT_SH_FILE='' \ # GITEA_RUNNER_CONFIG_TEMPLATE_FILE='/opt/config.template.yaml' \ # GITEA_RUNNER_NAME='' \ GITEA_RUNNER_LABELS='' \ GITEA_RUNNER_UID=1000 \ GITEA_RUNNER_GID=1000 \ # GITEA_RUNNER_REGISTRATION_FILE='/data/.runner' \ GITEA_RUNNER_REGISTRATION_TIMEOUT=30\ GITEA_RUNNER_REGISTRATION_RETRY_INTERVAL=5s \ # GITEA_RUNNER_LOG_LEVEL='info' \ GITEA_RUNNER_MAX_PARALLEL_JOBS=1 \ GITEA_RUNNER_JOB_TIMEOUT='3h' \ GITEA_RUNNER_ENV_FILE='/data/.env' \ GITEA_RUNNER_FETCH_TIMEOUT='5s' \ GITEA_RUNNER_FETCH_INTERVAL='2s' \ # GITEA_INSTANCE_INSECURE='false' \ # GITEA_RUNNER_JOB_CONTAINER_NETWORK='bridge' \ GITEA_RUNNER_JOB_CONTAINER_OPTIONS='' \ GITEA_RUNNER_JOB_CONTAINER_PRIVILEGED='false' \ GITEA_RUNNER_ACTION_CACHE_DIR='/data/cache/actions' \ # ACT_CACHE_SERVER_ENABLED='true' \ ACT_CACHE_SERVER_DIR='/data/cache/server' \ ACT_CACHE_SERVER_HOST='' \ ACT_CACHE_SERVER_PORT=0 RUN </opt/build_info cat /opt/build_info EOF COPY image/*.sh /opt/ COPY image/config.template.yaml /opt/ COPY .shared/lib/bash-init.sh /opt/bash-init.sh USER act VOLUME [ "/data" ] ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["/bin/bash", "/opt/run.sh"]