Skip to main content

GitLab Runner

gitlab-runner desplega una VM amb un GitLab Runner en un contenidor de Docker, amb un disc de dades per a les imatges, la memòria cau de compilació i la dels jobs, i una neteja setmanal que evita que s'ompli. Un stack per runner.

FaseTreballDesplega
1 infravmLa màquina
2 hostdockerDocker, amb les seves dades a /data
3 runnerrunnerEl config.toml, el contenidor i la comprovació que s'ha registrat
3 runnerpruneLa neteja programada

Per defecte: 4 nuclis, 8 GiB, disc arrel de 32 GiB i de dades de 100 GiB, concurrent = 2 i una neteja cada dilluns a les 03:00 que manté set dies.

Desplegament​

  1. A Horizon, crear el registre DNS de la màquina amb la seva pròpia MAC.
  2. A GitLab, crear el runner (Settings › CI/CD › Runners › New runner) i copiar-ne el token glrt-. La descripció, els tags i el temps màxim pertanyen al runner a GitLab.
  3. Desplegar la plantilla GitLab Runner, responent:
    • gitlab_runner_token: el token del pas anterior.
    • docker_access: dind dona a cada job el seu propi daemon de Docker; socket munta el socket de la màquina, més ràpid però equivalent a donar root a la màquina a cada job. dind llevat que els projectes siguin de confiança.

El runner no es registra amb gitlab-runner register: tot el config.toml s'escriu des del repositori, així que cada ajust és visible i canviar-lo és editar l'stack. Si el token no és vàlid, el desplegament falla en lloc de deixar una màquina buida.

info

El mateix token es pot fer servir en diverses màquines: cadascuna apareix a GitLab com un runner manager del mateix runner.

Canvis​

No hi ha accions. Cada ajust és una variable del seu treball:

Per canviarEditar
Versió, concurrència, imatge per defecte, accés a Docker, volums o entornEl treball runner
Els registry mirrorsEl treball docker
L'horari o la retenció de la netejaEl treball prune
La mida de la màquinaEl treball vm

La neteja es pot llançar a mà:

sudo /opt/gitlab-runner/prune.sh

Monitorització​

A més dels checks base, Nagios vigila Docker, el runner i les seves mètriques. No té check de càrrega: un pipeline fa servir tots els nuclis a propòsit, i una alerta a cada execució és una alerta que ningú no llegeix.

Documentació​

  • architecture.md: el contenidor, els discos, els modes d'accés a Docker i la mida.
  • operations.md: fases, actualitzacions, la neteja i què fer quan alguna cosa falla.