From f084eae72cd6dc7e51391ee2475e08f193f0c9a0 Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Sat, 3 May 2025 23:53:23 +0100 Subject: [PATCH] Add Docker setup files for ARM GitHub Actions self-hosted runner --- .github/runner-arm/Dockerfile | 30 +++++++++++++++++++++++++++ .github/runner-arm/docker-compose.yml | 18 ++++++++++++++++ .github/runner-arm/entrypoint.sh | 24 +++++++++++++++++++++ .github/runner-arm/example.env | 9 ++++++++ .github/runner-arm/start.sh | 4 ++++ 5 files changed, 85 insertions(+) create mode 100644 .github/runner-arm/Dockerfile create mode 100644 .github/runner-arm/docker-compose.yml create mode 100644 .github/runner-arm/entrypoint.sh create mode 100644 .github/runner-arm/example.env create mode 100644 .github/runner-arm/start.sh diff --git a/.github/runner-arm/Dockerfile b/.github/runner-arm/Dockerfile new file mode 100644 index 0000000..741114e --- /dev/null +++ b/.github/runner-arm/Dockerfile @@ -0,0 +1,30 @@ +FROM ubuntu:latest + +ARG RUNNER_VERSION="2.323.0" + +# Prevents installdependencies.sh from prompting the user and blocking the image creation +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt update -y && apt upgrade -y && useradd -m docker +RUN apt install -y --no-install-recommends \ + curl jq build-essential libssl-dev libffi-dev python3 python3-venv python3-dev python3-pip \ + # dot net core dependencies + libicu74 libssl3 libkrb5-3 zlib1g libcurl4 + + +RUN cd /home/docker && mkdir actions-runner && cd actions-runner \ + && curl -O -L https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-arm64-${RUNNER_VERSION}.tar.gz \ + && tar xzf ./actions-runner-linux-arm64-${RUNNER_VERSION}.tar.gz + +RUN chown -R docker ~docker && /home/docker/actions-runner/bin/installdependencies.sh + +COPY entrypoint.sh entrypoint.sh + +# make the script executable +RUN chmod +x entrypoint.sh + +# since the config and run script for actions are not allowed to be run by root, +# set the user to "docker" so all subsequent commands are run as the docker user +USER docker + +ENTRYPOINT ["./entrypoint.sh"] \ No newline at end of file diff --git a/.github/runner-arm/docker-compose.yml b/.github/runner-arm/docker-compose.yml new file mode 100644 index 0000000..3ecee8e --- /dev/null +++ b/.github/runner-arm/docker-compose.yml @@ -0,0 +1,18 @@ +# docker-compose.yml + +services: + github-runner: + build: + context: . + args: + RUNNER_VERSION: 2.323.0 + # container_name commented to allow for multiple runners + # container_name: github-runner + env_file: + - .env + volumes: + - runner-work:/home/runner/actions-runner/_work + restart: unless-stopped + +volumes: + runner-work: diff --git a/.github/runner-arm/entrypoint.sh b/.github/runner-arm/entrypoint.sh new file mode 100644 index 0000000..97e8609 --- /dev/null +++ b/.github/runner-arm/entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +REPOSITORY=$REPO +ACCESS_TOKEN=$GH_TOKEN +LABELS=$RUNNER_LABELS + +# echo "REPO ${REPOSITORY}" +# echo "ACCESS_TOKEN ${ACCESS_TOKEN}" + +REG_TOKEN=$(curl -X POST -H "Authorization: token ${ACCESS_TOKEN}" -H "Accept: application/vnd.github+json" https://api.github.com/repos/${REPOSITORY}/actions/runners/registration-token | jq .token --raw-output) + +cd /home/docker/actions-runner + +./config.sh --url https://github.com/${REPOSITORY} --token ${REG_TOKEN} --labels ${LABELS} + +cleanup() { + echo "Removing runner..." + ./config.sh remove --unattended --token ${REG_TOKEN} +} + +trap 'cleanup; exit 130' INT +trap 'cleanup; exit 143' TERM + +./run.sh & wait $! \ No newline at end of file diff --git a/.github/runner-arm/example.env b/.github/runner-arm/example.env new file mode 100644 index 0000000..6ab2dc8 --- /dev/null +++ b/.github/runner-arm/example.env @@ -0,0 +1,9 @@ + +# Repository name +REPO="Magnus167/rustframe" + +# GitHub runner token +GH_TOKEN="some_token_here" + +# Labels for the runner +RUNNER_LABELS=self-hosted-linux,linux \ No newline at end of file diff --git a/.github/runner-arm/start.sh b/.github/runner-arm/start.sh new file mode 100644 index 0000000..891f4d4 --- /dev/null +++ b/.github/runner-arm/start.sh @@ -0,0 +1,4 @@ + + +docker compose up -d --build +# docker compose up -d --build --scale github-runner=2