Archivo config.toml
Archivo config.toml
El archivo config.toml es el corazon de la configuracion del runner. Se ubica en:
- Linux:
/etc/gitlab-runner/config.toml - macOS:
~/.gitlab-runner/config.toml - Docker: Dentro del volumen montado
Estructura basica
concurrent = 4
check_interval = 3
log_level = "info"
log_format = "text"
[[runners]]
name = "mi-runner"
url = "https://gitlab.com/"
token = "glrt-xxxxxxxxxxxx"
executor = "docker"
[runners.docker]
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
volumes = ["/cache"]
Configuracion global
# Jobs simultaneos (todos los runners combinados)
concurrent = 4
# Intervalo de polling en segundos (minimo 3)
check_interval = 3
# Nivel de log: debug, info, warn, error, fatal, panic
log_level = "info"
Tip:
concurrentaplica a nivel global. Si tienes 2 runners conlimit = 3cada uno yconcurrent = 4, solo se ejecutaran 4 jobs simultaneos en total.
Configuracion por runner
[[runners]]
name = "docker-runner"
limit = 2 # Max jobs para ESTE runner
output_limit = 4096 # KB max de log por job
request_concurrency = 1 # Requests simultaneos a GitLab
Configuracion Docker
[runners.docker]
image = "node:20-alpine" # Imagen por defecto
privileged = false # No dar acceso root al host
pull_policy = ["if-not-present"] # always, never, if-not-present
# Volumenes persistentes
volumes = [
"/cache",
"/var/run/docker.sock:/var/run/docker.sock"
]
# Limites de recursos
memory = "2g"
cpus = "1.5"
# DNS personalizado
dns = ["8.8.8.8", "1.1.1.1"]
# Redes
network_mode = "bridge"
# Limpiar contenedores e imagenes
disable_cache = false
# Allowed images (seguridad)
allowed_images = ["node:*", "python:*", "alpine:*"]
Configuracion de Cache
[runners.cache]
Type = "s3"
Shared = true
[runners.cache.s3]
ServerAddress = "s3.amazonaws.com"
BucketName = "mi-cache-ci"
BucketLocation = "us-east-1"
AccessKey = "AKIAXXXXXXXXXX"
SecretKey = "xxxxxxxxxxxxx"
Ejemplo completo para produccion
concurrent = 8
check_interval = 3
log_level = "warning"
[[runners]]
name = "prod-docker-runner"
url = "https://gitlab.company.com/"
token = "glrt-xxxxxxxxxxxx"
executor = "docker"
limit = 4
output_limit = 8192
[runners.docker]
image = "alpine:3.19"
privileged = false
pull_policy = ["if-not-present"]
volumes = ["/cache", "/builds:/builds:rw"]
memory = "4g"
cpus = "2"
shm_size = 268435456
allowed_images = ["node:*", "python:*", "golang:*", "docker:*", "alpine:*"]
allowed_services = ["docker:*-dind", "postgres:*", "redis:*"]
[runners.cache]
Type = "s3"
Shared = true
[runners.cache.s3]
BucketName = "ci-cache"
Recargar configuracion
# El runner recarga automaticamente al detectar cambios
# O manualmente:
sudo gitlab-runner restart
Siguiente: Capitulo 5: Tags, Scopes y Seguridad →