Skip to content

Commit

Permalink
Add Dockerfile for self-hosted runner bolierplate
Browse files Browse the repository at this point in the history
  • Loading branch information
dimikot committed Mar 1, 2024
1 parent 82b728a commit 8905d6d
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,8 @@ jobs:
set -e
ls -la ~/ci-storage/dimikot/ci-storage
[ "$(cat dummy.txt)" = "dummy" ] || { echo "dummy.txt was not restored"; exit 1; }
example:
runs-on: self-hosted
steps:
- run: for i in $(seq 1 600); do echo $i; sleep 1; done
45 changes: 45 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
FROM ubuntu:22.04

ARG RUNNER_VERSION

ENV GH_OWNER=""
ENV GH_REPO=""
ENV GH_TOKEN=""

ENV DEBIAN_FRONTEND=noninteractive
RUN true \
&& apt-get update -y \
&& apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \
awscli jq gh \
mc gcc git curl wget pv psmisc unzip vim nano telnet net-tools bash-completion \
libssl-dev apt-transport-https build-essential ca-certificates locales pkg-config

RUN true \
&& useradd -m ubuntu

USER ubuntu
RUN true \
&& mkdir /home/ubuntu/actions-runner \
&& cd /home/ubuntu/actions-runner \
&& arch=$(dpkg --print-architecture) \
&& case "$arch" in \
x86_64|amd64) arch=linux-x64 ;; \
aarch64|arm64) arch=linux-arm64 ;; \
*) echo >&2 "unsupported architecture: $arch"; exit 1 ;; \
esac \
&& curl --no-progress-meter -L https://github.com/actions/runner/releases/download/v$RUNNER_VERSION/actions-runner-$arch-$RUNNER_VERSION.tar.gz | tar xz

USER root
RUN /home/ubuntu/actions-runner/bin/installdependencies.sh \
apt-get autoremove \
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/*

USER ubuntu
COPY --chmod=755 --chown=ubuntu:ubuntu entrypoint.sh /home/ubuntu

WORKDIR /home/ubuntu
ENTRYPOINT ["./entrypoint.sh"]
CMD ["./run.sh"]
11 changes: 11 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: "3.4"
services:
ci-storage:
build:
dockerfile: ./Dockerfile
args:
- RUNNER_VERSION=2.314.1
environment:
- GH_OWNER
- GH_REPO
- GH_TOKEN
30 changes: 30 additions & 0 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
set -u -e -o xtrace

: $GH_OWNER
: $GH_REPO
: $GH_TOKEN # used by gh cli

cd ./actions-runner

name="ci-storage-$(hostname)"

token=$(gh api -X POST --jq .token "repos/$GH_OWNER/$GH_REPO/actions/runners/registration-token")

config=$(
set +o xtrace
echo "{\"name\":\"$name\",\"labels\":[\"self-hosted\"],\"runner_group_id\":1}" \
| gh api -X POST --input - \
--jq .encoded_jit_config \
"repos/$GH_OWNER/$GH_REPO/actions/runners/generate-jitconfig"
)

cleanup() {
token=$(gh api -X POST --jq .token "repos/$GH_OWNER/$GH_REPO/actions/runners/remove-token")
./config.sh remove --token "$token"
}

trap "cleanup; exit 130" INT
trap "cleanup; exit 143" TERM

eval "$@" --jitconfig "$config" & wait $!

0 comments on commit 8905d6d

Please sign in to comment.