Executors disponibles
- Shell — Execute les scripts directement sur la machine hote
- Docker — Execute dans des conteneurs Docker (le plus utilise)
- Docker Machine — Autoscaling avec Docker Machine
- Kubernetes — Execute dans des Pods Kubernetes
- SSH — Execute sur une machine distante via SSH
Configuration Docker executor
# /etc/gitlab-runner/config.toml
[[runners]]
name = "docker-runner"
url = "https://gitlab.example.com/"
token = "TOKEN"
executor = "docker"
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0
allowed_images = ["ruby:*", "python:*", "node:*"]
pull_policy = ["if-not-present"]
Configuration Kubernetes executor
[[runners]]
name = "k8s-runner"
url = "https://gitlab.example.com/"
token = "TOKEN"
executor = "kubernetes"
[runners.kubernetes]
namespace = "gitlab-ci"
image = "alpine:latest"
cpu_request = "500m"
memory_request = "256Mi"
cpu_limit = "1"
memory_limit = "1Gi"
service_cpu_request = "100m"
service_memory_request = "128Mi"
[runners.kubernetes.node_selector]
workload = "ci"
Autoscaling avec Docker Machine
[[runners]]
executor = "docker+machine"
[runners.machine]
IdleCount = 1
IdleTime = 600
MaxBuilds = 100
MachineDriver = "amazonec2"
MachineName = "gitlab-ci-%s"
MachineOptions = [
"amazonec2-instance-type=t3.medium",
"amazonec2-region=eu-west-1",
"amazonec2-vpc-id=vpc-xxxxx"
]
[[runners.machine.autoscaling]]
Periods = ["* * 9-17 * * mon-fri *"]
IdleCount = 5
IdleTime = 600
[[runners.machine.autoscaling]]
Periods = ["* * * * * sat,sun *"]
IdleCount = 0
IdleTime = 60
Securite : Evitez
privileged = true sauf si Docker-in-Docker est indispensable. Preferez kaniko pour builder des images.