diff --git a/README.md b/README.md index a908047..f779ad4 100644 --- a/README.md +++ b/README.md @@ -75,3 +75,21 @@ To stop the containers: ```bash docker compose down ``` + +### Github ARC + +This image can also be used with Github Actions Runner Controller (ARC). + +To use it, modify the `values.yaml` during the ScaleSet installation: +```yaml +template: + spec: + runtimeClassName: sysbox-runc + hostUsers: false + containers: + - name: runner + image: "ghcr.io/ableytner/docker-github-actions-runner:dev-ubuntu" + imagePullPolicy: Always + command: + - /entrypoint-arc.sh +``` diff --git a/docker-compose.yaml b/docker-compose.yaml index 25b673b..83fdb39 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -10,6 +10,8 @@ services: TOKEN: ${TOKEN} # These are in addition to self-hosted,Linux, # EXTRA_LABELS: docker,nonroot,example + # You can add additional args that are passed to the runner binary + # RUNNER_ARGS: --ephemeral deploy: mode: replicated replicas: 2 diff --git a/linux/Dockerfile b/linux/Dockerfile index 5377b80..544d3fb 100644 --- a/linux/Dockerfile +++ b/linux/Dockerfile @@ -14,20 +14,20 @@ ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install -y curl jq sudo \ - && useradd -m runner \ + && useradd -m -G 0 runner \ && usermod -aG sudo runner \ && echo '%sudo ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \ && mkdir /opt/hostedtoolcache \ && chmod 777 /opt/hostedtoolcache # install github actions runner -RUN INSTRUCTION_SET="$(arch | sed s/aarch64/arm64/ | sed s/x86_64/x64/)" \ - && mkdir -p /home/runner/actions-runner \ - && curl -L https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-${INSTRUCTION_SET}-${RUNNER_VERSION}.tar.gz -o /home/runner/actions-runner/actions.tar.gz \ - && cd /home/runner/actions-runner \ +RUN ARCH="$(arch | sed s/aarch64/arm64/ | sed s/x86_64/x64/)" \ + && mkdir -p /home/runner \ + && curl -L https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-${ARCH}-${RUNNER_VERSION}.tar.gz -o /home/runner/actions.tar.gz \ + && cd /home/runner \ && tar -xzf actions.tar.gz \ && rm actions.tar.gz \ - && chown -R runner /home/runner/actions-runner \ + && chown -R runner /home/runner \ && ./bin/installdependencies.sh # install simple apt packages @@ -85,4 +85,6 @@ COPY --chmod=755 scripts/* / # switch to the runner user USER runner +WORKDIR /home/runner + ENTRYPOINT ["/entrypoint.sh"] diff --git a/linux/scripts/entrypoint-arc.sh b/linux/scripts/entrypoint-arc.sh new file mode 100644 index 0000000..e04195c --- /dev/null +++ b/linux/scripts/entrypoint-arc.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -o nounset + +# [SETUP] + +# start docker +echo "Starting docker..." +sudo service docker start > /dev/null +sleep 5 +if [[ "$(service docker status)" == *"Docker is running"* ]]; then + echo "Done!" +else + echo "Docker didn't start, status is:" + service docker status + exit 1 +fi + +# [START] + +/home/runner/run.sh diff --git a/linux/scripts/entrypoint.sh b/linux/scripts/entrypoint.sh index caa7770..c5dd719 100644 --- a/linux/scripts/entrypoint.sh +++ b/linux/scripts/entrypoint.sh @@ -34,7 +34,7 @@ fi echo "Registering runner..." -cd /home/runner/actions-runner +cd /home/runner if [[ -v REPO ]]; then REQ_TOKEN_URL=https://api.github.com/repos/${REPO}/actions/runners/registration-token @@ -61,7 +61,8 @@ rm token_resp.txt --name "${RUNNER_NAME:-"runner-ubuntu"}-${HOSTNAME}" \ --unattended \ --disableupdate \ - --labels "${EXTRA_LABELS:-}" + --labels "${EXTRA_LABELS:-}" \ + "${RUNNER_ARGS:-}" cleanup() { echo "Removing runner..."