Runner einrichten
Das ist die Anleitung, nach der die Runner-VM dieser Plattform entstand. Du machst es auf deiner Server-VM als Project Runner für dein Projekt, damit du den Gruppen-Runner nicht brauchst.
Eine eigene VM für den Runner ist sauberer als die Webserver-VM, im Kurs darf es dieselbe sein. Anforderungen:
- Ubuntu Server 24.04, 2 vCPU, 4 GB RAM, 40 GB Disk. Docker-Images und npm-Cache brauchen Platz.
- Nur ausgehende Verbindungen: HTTPS zu GitLab und Docker Hub, SSH zum Deploy-Ziel. Eingehend nur SSH zur Verwaltung.
- Automatische Sicherheitsupdates:
sudo apt install unattended-upgrades.
Installation
Abschnitt betitelt „Installation“- Docker aus den Ubuntu-Paketen:
Runner-VM sudo apt updatesudo apt install -y docker.iosudo systemctl enable --now docker - Das Paket-Repository von GitLab einrichten. Das Skript lädst du zuerst herunter und liest es, bevor es mit
sudoläuft:Runner-VM curl -fsSL -o /tmp/gitlab-runner-repo.sh https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.shless /tmp/gitlab-runner-repo.shsudo bash /tmp/gitlab-runner-repo.shsudo apt install -y gitlab-runner - Prüfen:
Runner-VM sudo gitlab-runner statusdocker --version
Registrieren
Abschnitt betitelt „Registrieren“Der Runner muss sich bei GitLab anmelden. Dafür erzeugst du in GitLab einen Runner-Eintrag und bekommst ein Token.
Settings → CI/CD → Runners → New project runner. «Run untagged jobs» anhaken, Description meine-vm, Create runner.
Gruppe öffnen, Build → Runners → New group runner. Sonst gleich. Dafür brauchst du die Rolle Owner in der Gruppe.
GitLab zeigt ein Token glrt-…, das nur einmal sichtbar ist. Damit auf der VM:
sudo gitlab-runner register --url https://gitlab.ethz.ch --token glrt-XXXXXXXXXXXXXXXXXXXXDer Assistent fragt nach Name (meine-vm), Executor (docker) und Standard-Image (alpine:latest). Das Standard-Image gilt nur für Jobs ohne eigenes image.
sudo gitlab-runner verifysudo gitlab-runner listIn GitLab erscheint der Runner mit grünem Punkt. Jetzt die hängende Pipeline deines Projekts auf Retry setzen. Der erste Lauf zieht die Images und dauert ein paar Minuten, danach läuft eine Pipeline dieser Plattform in rund zwei Minuten.
config.toml
Abschnitt betitelt „config.toml“Alles, was der Assistent gefragt hat, steht in /etc/gitlab-runner/config.toml:
concurrent = 1
[[runners]] name = "meine-vm" url = "https://gitlab.ethz.ch" token = "glrt-…" executor = "docker" [runners.docker] image = "alpine:latest" privileged = false volumes = ["/cache"]concurrent ist die Zahl der Jobs, die gleichzeitig laufen dürfen. Mit 2 vCPU bleibt es bei 1. Nach Änderungen: sudo systemctl restart gitlab-runner. Das Token in dieser Datei ist das Geheimnis, mit dem sich der Runner ausweist, die Datei gehört root und bleibt so.
Betrieb
Abschnitt betitelt „Betrieb“- Logs:
sudo journalctl -u gitlab-runner -f. - Aufräumen:
docker system prune -fentfernt alte Container und ungenutzte Images. Als monatlichen Timer einrichten, wie in Linux Grundlagen, Modul 9. - Updates:
sudo apt update && sudo apt upgradeaktualisiert auch gitlab-runner, das Paket-Repository ist eingetragen. - Backup: Die VM ins Proxmox-Backup aufnehmen. Im Notfall ist ein Runner in zwanzig Minuten neu aufgesetzt, das Backup spart nur Zeit.
Lösung anzeigen
Wenn der Runner online ist, aber keine Jobs nimmt: «Run untagged jobs» vergessen. Ein Runner mit Tags nimmt nur Jobs, die dieselben Tags haben, und deine Jobs haben keine. In GitLab beim Runner nachträglich änderbar.
Selbstcheck · 3 Fragen