ARG ACT_RUNNER_VERSION=3.0.2 # STAGE 1 — BUILDER FROM alpine:3.20 AS builder ARG ACT_RUNNER_VERSION RUN apk add --no-cache curl unzip bash # Kubectl RUN curl -Lo /tmp/kubectl \ "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" \ && chmod +x /tmp/kubectl ARG ACT_RUNNER_VERSION # ACT Runner RUN curl -sSLO "https://dl.gitea.com/gitea-runner/${ACT_RUNNER_VERSION}/gitea-runner-${ACT_RUNNER_VERSION}-linux-amd64" \ && curl -sSLO "https://dl.gitea.com/gitea-runner/${ACT_RUNNER_VERSION}/gitea-runner-${ACT_RUNNER_VERSION}-linux-amd64.sha256" \ && sed -i '/found/d' "gitea-runner-${ACT_RUNNER_VERSION}-linux-amd64.sha256" \ && sha256sum -c "gitea-runner-${ACT_RUNNER_VERSION}-linux-amd64.sha256" \ && install -m 0755 "gitea-runner-${ACT_RUNNER_VERSION}-linux-amd64" /tmp/gitea-runner # -------------------------------------------------------------------- # STAGE 2 — FINAL IMAGE # -------------------------------------------------------------------- FROM alpine:3.20 COPY --from=builder /tmp/kubectl /usr/local/bin/kubectl COPY --from=builder /tmp/gitea-runner /usr/local/bin/act_runner COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN addgroup -g 1000 runner \ && adduser -D -u 1000 -G runner -s /bin/bash runner \ && mkdir -p /home/runner \ && chown -R runner:runner /home/runner RUN mkdir /etc/act_runner \ && chown -R runner:runner /etc/act_runner VOLUME /home/runner/data ENV GITEA_RUNNER_NAME="kubectl-mini" \ GITEA_RUNNER_CONFIG_FILE="/etc/act_runner/config.yaml" \ GITEA_RUNNER_EXEC_WORKDIR="/home/runner/workspace" \ GITEA_RUNNER_EPHEMERAL="1"\ GITEA_RUNNER_LABELS="linux,alpine,kubectl" USER runner RUN mkdir /home/runner/workspace && mkdir /home/runner/data WORKDIR /home/runner ENTRYPOINT ["/entrypoint.sh"]