From b870c5a41921dfb16f9ad905d4833d51f9b0d8f1 Mon Sep 17 00:00:00 2001 From: Kevin Daudt Date: Wed, 17 Jul 2019 19:48:58 +0200 Subject: [PATCH] add docker file to build the image --- Dockerfile | 16 ++++++++++++++++ README.md | 34 ++++++++++++++++++++++++++++++++++ docker-compose.yml | 8 ++++++++ register-runner | 13 +++++++++++++ run | 10 ++++++++++ 5 files changed, 81 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 register-runner create mode 100755 run diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..34b0eb5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM alpine:latest + +ENV SSL_CERT_FILE /etc/ssl/cert.pem + +RUN echo '@edge/testing http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \ + && apk upgrade -U --no-cache \ + && apk add -U --no-cache \ + gitlab-runner@edge/testing \ + && adduser -D -S -h /home/gitlab-runner gitlab-runner + +COPY register-runner /usr/local/bin + +VOLUME ["/etc/gitlab-runner", "/home/gitlab-runner"] +ENTRYPOINT ["/usr/bin/gitlab-runner"] +CMD ["run", "--user=gitlab-runner", "--working-directory=/home/gitlab-runner"] + diff --git a/README.md b/README.md index c4c4d8d..52ff882 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,37 @@ This will create a docker image for running a gitlab runner on Alpine Linux on all the architectures that Alpine Linux supports. + +## Starting the runner + +To run the container, 1 required and 2 optional volumes need to be attached: + +* docker socket (/var/run/docker.sock) +* conf dir (/etc/alpine-runner) +* home dir (/home/gitlab-runner) + +For example: + +```sh +docker run -d \ + -v /srv/gitlab-runner/conf:/etc/gitlab-runner \ + -v /srv/gitlab-runner/home:/home/gitlab-runner \ + -v /var/run/docker.sock:/var/run/docker.sock \ + gitlab-runner +``` + +You can execute `./run` to run this command + +## Register the runner + +There is a `./register-runner` command available in the container to register it. + +To execute it, use the following command: + +```sh +docker exec -e ARCH= -e GITLAB_REGISTER_TOKEN= register-runner +``` + +* `ARCH` is added as a tag on the runner +* `GITLAB_REGISTER_TOKEN` is a token you can find under `Settings > CI / CD > Runners` + of a specific project or under `Admin > Overview > Runners`. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..71de3c8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: 3 +services: + gitlab-runner: + build: . + volumes: + - /srv/gitlab-runner/conf:/etc/gitlab-runner + - /srv/gitlab-runner/home:/home/gitlab-runner + - /var/run/docker.sock:/var/run/docker.sock diff --git a/register-runner b/register-runner new file mode 100755 index 0000000..2e7d177 --- /dev/null +++ b/register-runner @@ -0,0 +1,13 @@ +#!/bin/sh + +gitlab-runner register \ + --non-interactive \ + --url "https://gitlab.alpinelinux.org/" \ + --registration-token "$GITLAB_REGISTER_TOKEN" \ + --executor "docker" \ + --docker-image alpine:latest \ + --description "docker-runner ($ARCH)" \ + --tag-list "docker-alpine,$ARCH" \ + --run-untagged="true" \ + --locked="false" \ + --access-level="not_protected" diff --git a/run b/run new file mode 100755 index 0000000..5f3ec89 --- /dev/null +++ b/run @@ -0,0 +1,10 @@ +#!/bin/sh + +name=${1-gitlab-runner} + +docker run -d \ + -v /srv/gitlab-runner/conf:/etc/gitlab-runner \ + -v /srv/gitlab-runner/home:/home/gitlab-runner \ + -v /var/run/docker.sock:/var/run/docker.sock \ + --name $name \ + gitlab-runner -- GitLab