You are currently viewing GitLab Runner unter Linux mit Docker installieren

GitLab Runner unter Linux mit Docker installieren

In vergangenen Beiträgen habe ich darüber berichtet, wie ich unter YunoHost und auf meiner Synology NAS einen GitLab Runner installiert habe. Dieser Beitrag soll die Installation auf einem Linux Server mit Hilfe von Docker zeigen.

Voraussetzung

Ich habe ein V-Server mit einem Debian System aktiv und auf diesem möchte ich den Docker Container mit dem GitLab Runner starten. Bevor ich den Docker Container aufsetzen kann, muss ich Docker installieren. Dazu findest du genug Quellen im Internet. Ich melde mich über SSH auf meinem Server an, installiere Docker und kann dann den GitLab Runner aufsetzen.

GitLab Runner Container erstellen

Als erstes werde ich den Docker Container erstellen und starten.

docker run -d --name gitlab-runner --restart always --memory 8g\
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

In der ersten Zeile gebe ich ein paar Parameter für den Docker Container an. Den Namen setze ich auf gitlab-runner und der Neustart Modus wird auf always gesetzt. Alternativ zu always geht auch unless-stopped. Zusätzlich möchte ich den Arbeitsspeicher auf 8GB begrenzen, weil ich in der Vergangenheit schlechte Erfahrung gemacht habe, wenn ich dies nicht mache.

In Zeile zwei und drei möchte ich Verzeichnisse einbinden (mounten). Als erstes ist es das Konfigurationsverzeichnis, damit ich die Konfigurationsdatei auch auf dem Server direkt ansehen kann. Da ich innerhalb des GitLab Runners Docker benötige, muss ich zusätzlich die Docker Engine einbinden.

In der vierten Zeile gebe ich noch das Docker Image des GitLab Runners an. Ich verwende die aktuellste Version.

Arbeiten mit dem Gitlab Runner

Neuen Runner registrieren

Als nächstes werde ich einen GitLab Runner registrieren, damit ich diesen auch für meine GitLab CI/CD Pipeline verwenden kann. Dies mache ich mit dem folgenden Befehl:

docker exec -it gitlab-runner gitlab-runner register

Bei der Registrierung benötige ich die URL meines GitLab Systems und einen Token. Ich möchte den Runner als shared Runner einrichten, damit ich diesen in allen Projekten verwenden kann. Um den Token zu bekommen muss ich im Admin Bereich zu den Runners navigieren (Overview>Runners). Hier finde ich den Registrierungstoken über den Button Register an instance runner. Den muss ich kopieren und entsprechend eintragen.

Anschließend gebe ich eine Beschreibung und die gewünschten Tags ein. Als nächstes gebe ich an, wie der GitLab Runner ausgeführt werden soll. In meinem Fall wähle ich docker aus. Das default Docker Image setze ich auf ein Microsoft Image mit .NET 6.0. Weitere Docker Images sind auf der Docker Hub Seite zu finden. Das default Docker Image wird verwendet, wenn kein anderes Image in der .gitlab-ci.yml Datei angegeben wird.

GitLab Runner Registrierung
Die GitLab Runner Registrierung ist erfolgreich abgeschlossen.

Die Registrierung war erfolgreich und der GitLab Runner wird mir in GitLab unter den shared Runners angezeigt.

Verschiedene Befehle für den GitLab Runner Container

Hier sind ein paar nützliche Befehle zum Arbeiten mit dem GitLab Runner Container:

# GitLab Runner auflisten
docker exec -it gitlab-runner gitlab-runner list
# GitLab Runner stoppen
docker exec -it gitlab-runner gitlab-runner stop
# GitLab Runner starten
docker exec -it gitlab-runner gitlab-runner start
# GitLab Runner neustarten
docker exec -it gitlab-runner gitlab-runner restart
# GitLab Runner aus GitLab entfernen
docker exec -it gitlab-runner gitlab-runner unregister --name <NAME>

Konfigurationsdatei

Die Konfigurationsdatei der GitLab Runner können wir uns auf dem Server ansehen.

cat /srv/gitlab-runner/config/config.toml

In der Konfigurationsdatei sind ein paar globale Optionen definiert und im unteren Teil ist dann die Konfiguration für jeden registrierten GitLab Runner hinterlegt. Meine Konfigurationsdatei sieht folgendermaßen aus:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Dotnet Runner"
  url = "<GitLab url>"
  token = "<GitLab Token>"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "mcr.microsoft.com/dotnet/sdk:6.0"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

Links

Schreibe einen Kommentar