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.
| Fase | Treball | Desplega |
|---|---|---|
1 infra | vm | La màquina |
2 host | docker | Docker, amb les seves dades a /data |
3 runner | runner | El config.toml, el contenidor i la comprovació que s'ha registrat |
3 runner | prune | La 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
- A Horizon, crear el registre DNS de la màquina amb la seva pròpia MAC.
- 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. - Desplegar la plantilla GitLab Runner, responent:
gitlab_runner_token: el token del pas anterior.docker_access:dinddona a cada job el seu propi daemon de Docker;socketmunta el socket de la màquina, més ràpid però equivalent a donar root a la màquina a cada job.dindllevat 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.
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 canviar | Editar |
|---|---|
| Versió, concurrència, imatge per defecte, accés a Docker, volums o entorn | El treball runner |
| Els registry mirrors | El treball docker |
| L'horari o la retenció de la neteja | El treball prune |
| La mida de la màquina | El 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.