GitLab Runner auf GCP - Setup Guide¶
1. GCP VM erstellen¶
# Via gcloud CLI
gcloud compute instances create gitlab-runner \
--project=myk8sproject-207017 \
--zone=europe-west1-b \
--machine-type=e2-small \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=30GB \
--tags=gitlab-runner \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install -y docker.io
systemctl enable docker
systemctl start docker
usermod -aG docker $USER
'
Geschรคtzte Kosten: ~\(13/Monat (e2-small) oder ~\)6/Monat (e2-micro)
2. GitLab Runner installieren¶
# SSH auf die VM
gcloud compute ssh gitlab-runner --zone=europe-west1-b
# Runner installieren
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner
# Docker installieren (falls nicht via startup-script)
sudo apt-get install -y docker.io
sudo usermod -aG docker gitlab-runner
3. Runner registrieren¶
# Registration Token von GitLab holen:
# Settings โ CI/CD โ Runners โ New project runner
sudo gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--token "PROJECT_RUNNER_TOKEN" \
--executor "docker" \
--docker-image "python:3.11-slim" \
--description "gcp-runner-clarissa" \
--tag-list "gcp,docker" \
--run-untagged="true"
4. Runner konfigurieren¶
# /etc/gitlab-runner/config.toml
sudo nano /etc/gitlab-runner/config.toml
concurrent = 4
check_interval = 0
[[runners]]
name = "gcp-runner-clarissa"
url = "https://gitlab.com/"
token = "PROJECT_TOKEN"
executor = "docker"
[runners.docker]
image = "python:3.11-slim"
privileged = true # Fรผr Docker-in-Docker
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0
5. Runner starten¶
sudo gitlab-runner start
sudo gitlab-runner status
# Logs checken
sudo journalctl -u gitlab-runner -f
6. GitLab konfigurieren¶
In .gitlab-ci.yml optional Tags nutzen:
tests:
tags:
- gcp # Nur auf GCP Runner ausfรผhren
script:
- pytest
Oder run-untagged: true lassen fรผr alle Jobs.
Vorteile¶
- โ Unbegrenzte CI-Minuten
- โ Schnellere Builds (keine Warteschlange)
- โ Docker-in-Docker fรผr Container-Builds
- โ Persistenter Cache
- โ Volle Kontrolle รผber Umgebung
- โ ~$6-13/Monat statt $29/User
Wartung¶
# Runner updaten
sudo apt-get update && sudo apt-get upgrade gitlab-runner
# Docker cleanup (wรถchentlich)
docker system prune -af
# Logs rotieren - passiert automatisch via journald