ver 0.1
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# custom-gitea-runner — self-owned Gitea Actions runner
|
||||
# All dependencies installed at build time; no runtime apt-get.
|
||||
|
||||
ARG UBUNTU_VERSION=22.04
|
||||
FROM ubuntu:${UBUNTU_VERSION}
|
||||
|
||||
ARG ACT_RUNNER_VERSION=0.2.11
|
||||
ARG NODE_MAJOR=20
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
ARG VERSION=dev
|
||||
|
||||
LABEL org.opencontainers.image.title="custom-gitea-runner" \
|
||||
org.opencontainers.image.description="Self-owned Gitea Actions runner with bundled tooling" \
|
||||
org.opencontainers.image.version="${VERSION}" \
|
||||
org.opencontainers.image.created="${BUILD_DATE}" \
|
||||
org.opencontainers.image.revision="${VCS_REF}"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive \
|
||||
IMAGE_VERSION="${VERSION}" \
|
||||
GIT_REVISION="${VCS_REF}" \
|
||||
RUNNER_CONFIG_PATH=/config/runner.yaml \
|
||||
RUNNER_WORKDIR=/work
|
||||
|
||||
# ─── Base packages ────────────────────────────────────────────────────────────
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
bash \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
gnupg \
|
||||
jq \
|
||||
tini \
|
||||
tzdata \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ─── Node.js (NodeSource — Ubuntu 22.04 default is 12.x, too old) ─────────────
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - \
|
||||
&& apt-get install -y --no-install-recommends nodejs \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ─── Docker CLI ───────────────────────────────────────────────────────────────
|
||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
|
||||
| gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
|
||||
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") 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/*
|
||||
|
||||
# ─── act_runner binary (pinned) ───────────────────────────────────────────────
|
||||
# To update: bump ACT_RUNNER_VERSION in the build command or here.
|
||||
# Releases: https://gitea.com/gitea/act_runner/releases
|
||||
RUN ARCH=$(dpkg --print-architecture) \
|
||||
&& curl -fsSL \
|
||||
"https://gitea.com/gitea/act_runner/releases/download/v${ACT_RUNNER_VERSION}/act_runner-${ACT_RUNNER_VERSION}-linux-${ARCH}" \
|
||||
-o /usr/local/bin/act_runner \
|
||||
&& chmod +x /usr/local/bin/act_runner
|
||||
|
||||
# ─── Runtime directories and scripts ─────────────────────────────────────────
|
||||
RUN mkdir -p /config /work /config/trusted-ca
|
||||
|
||||
COPY docker/runner/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
COPY docker/runner/healthcheck.sh /usr/local/bin/healthcheck.sh
|
||||
COPY docker/runner/smoke-test.sh /usr/local/bin/smoke-test.sh
|
||||
|
||||
RUN chmod +x \
|
||||
/usr/local/bin/docker-entrypoint.sh \
|
||||
/usr/local/bin/healthcheck.sh \
|
||||
/usr/local/bin/smoke-test.sh
|
||||
|
||||
VOLUME ["/config", "/work"]
|
||||
|
||||
HEALTHCHECK \
|
||||
--interval=30s \
|
||||
--timeout=10s \
|
||||
--start-period=60s \
|
||||
--retries=3 \
|
||||
CMD ["/usr/local/bin/healthcheck.sh"]
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
||||
Reference in New Issue
Block a user