From 3d019a5178dd05b50da2c20f0eff241922d05894 Mon Sep 17 00:00:00 2001
From: Christian Elberfeld <elberfeld@web.de>
Date: Sun, 20 Nov 2022 00:21:25 +0100
Subject: [PATCH] gitlab runner auf webserver

---
 host_vars/webserver                           |  2 +
 webserver/docker_gitlab/tasks/main.yml        |  2 +
 .../templates/docker-compose.yml              | 59 +++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/host_vars/webserver b/host_vars/webserver
index 63741544..0e1265fc 100644
--- a/host_vars/webserver
+++ b/host_vars/webserver
@@ -79,6 +79,8 @@ alert:
     - { name: "dokuwiki_app_1" }
     - { name: "coturn_coturn_1" }
     - { name: "gitlab_app_1" }
+    - { name: "gitlab_dind_1" }
+    - { name: "gitlab_runner_1" }
     - { name: "hackmd_app_1" }
     - { name: "hackmd_db_1" }
     - { name: "icinga_app_1" }
diff --git a/webserver/docker_gitlab/tasks/main.yml b/webserver/docker_gitlab/tasks/main.yml
index 4cb3d95b..5091020b 100644
--- a/webserver/docker_gitlab/tasks/main.yml
+++ b/webserver/docker_gitlab/tasks/main.yml
@@ -4,6 +4,7 @@
   with_items:
    - { path: /srv/shared/noreply_email_pass,  length: -1 }
    - { path: /srv/ldap/secret/ldap_readonly_pass,  length: -1 }
+   - { path: /srv/gitlab/runner_registration_token,  length: -1 }
 
 # Benötigte Verzeichnisstrukturen erstellen
 
@@ -18,6 +19,7 @@
     - "/srv/gitlab/conf/"
     - "/srv/gitlab/data/"
     - "/srv/gitlab/log"
+    - "/srv/gitlab/runner"
 
 # Konfigurationsdateien erstellen
 
diff --git a/webserver/docker_gitlab/templates/docker-compose.yml b/webserver/docker_gitlab/templates/docker-compose.yml
index c4e53cb5..d0509756 100644
--- a/webserver/docker_gitlab/templates/docker-compose.yml
+++ b/webserver/docker_gitlab/templates/docker-compose.yml
@@ -29,6 +29,65 @@ services:
       - default
       - web
 
+
+  # Docker in Docker for Gitlab-Runner execution
+  # see https://forum.gitlab.com/t/example-gitlab-runner-docker-compose-configuration/67344
+
+  dind:
+
+    image: docker:20-dind
+    restart: always
+    privileged: true
+    environment:
+      DOCKER_TLS_CERTDIR: ""
+    command:
+      - --storage-driver=overlay2
+    networks:
+      - default
+
+
+  runner:
+
+    restart: always
+    image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine
+    depends_on:
+      - dind
+      - app
+    environment:
+      - DOCKER_HOST=tcp://dind:2375
+    volumes:
+      - "/srv/gitlab/runner:/etc/gitlab-runner:z"
+    networks:
+      - default
+
+  
+  # Runner Registration 
+  # Excecute once when Gitlab is running 
+
+  # register-runner:
+
+  #   restart: 'no'
+  #   image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine
+  #   depends_on:
+  #     - dind
+  #     - app
+  #   environment:
+  #     - CI_SERVER_URL=https://{{ domain }}
+  #     - REGISTRATION_TOKEN={{ runner_registration_token }}
+  #   command:
+  #     - register
+  #     - --non-interactive
+  #     - --locked=false
+  #     - --name=warpzone-webserver
+  #     - --executor=docker
+  #     - --docker-image=docker:20-dind
+  #     - --docker-volumes=/var/run/docker.sock:/var/run/docker.sock
+  #   volumes:
+  #     - "/srv/gitlab/runner:/etc/gitlab-runner:z"
+  #   networks:
+  #     - default
+
+
 networks:
   web:
     external: true
-- 
GitLab