Guia runners
IDEAS / CÓDIGO / PROCESO *
Guía de runners
esta guia es para añadir un runner a un nuevo repositorio en una máquina donde ya funciona otro. Los nombres de proyectos, rutas y dirección del servidor que aparecen abajo son ejemplos; cámbialos por los de tu instalación.
Crear directorio del nuevo repo
mediante el usuario root
nos movemos a
cd /srv/forgejo-runners
en esta carpeta se encuentran las carpetas de los distintos repos
creamos la nueva carpeta para el nuevo repo
mkdir proyecto-nuevo
Clonar los archivos base de otro repo
en este paso usaremos como referencia los archivos de un repositorio de ejemplo llamado proyecto-base
copiaremos el archivo compose.yml y el runner-config, este ultimo ira dentro de la carpeta data
(los archivos pueden ser .yml como .yaml pero todos tienen que tener la misma terminacion)
la estructura seria la siguiente:
de momento crea manualmente las carpetas con mkdir
/srv/forgejo-runners
/proyecto-base
compose.yml
/data
runner-config.yml
/data-proyecto-base
archivos de la carpeta data necesarios para los test
/proyecto-nuevo
compose.yml
/data
runner-config.yml
/data-proyecto-nuevo
archivos de la carpeta data necesarios para los test
/otro-proyecto
.................................
los comandos para copiar estos archivos pueden ser varios, como ejemplo tomaremos:
sudo cp proyecto-base/compose.yml proyecto-nuevo/compose.yml
y
sudo mkdir -p proyecto-nuevo/data
sudo cp proyecto-base/data/runner-config.yml proyecto-nuevo/data/runner-config.yml
Configuración de los archivos
Compose.yml
con nano compose.yml en la ubicación del archivo se tendrán que modificar los siguientes parámetros
en dind
volumes:
- dind-data-proyecto-base:/var/lib/docker
- /srv/forgejo-runners/shared/data:/shared/data:ro
- type: bind
source: ./data-proyecto-base
target: /srv/forgejo-runners/proyecto-base/data-proyecto-base
read_only: true
cambia las siguientes lineas
- dind-data-proyecto-base:/var/lib/docker por dind-data-proyecto-nuevo:/var/lib/docker
..
..
..
source: ./data-proyecto-base por source: ./data-proyecto-nuevo
target: /srv/forgejo-runners/proyecto-base/data-proyecto-base por la nueva ruta de la carpeta data del proyecto
si bajamos al final del archivo nos encontramos con:
volumes:
dind-data-proyecto-base:
name: forgejo_proyecto_base_dind-data
cambia la clave y el nombre por unos descriptivos para el nuevo volumen
para validar estos cambios usa:
cd /srv/forgejo-runners/proyecto-nuevo
sudo docker compose -p proyecto-nuevo config
Runner-config.yml
antes de configurar este paso tendremos que crear el nuevo runner en forgejo
en:
Abre el repositorio.
Entra en Settings.
Entra en Actions → Nodos/runners(dependera del idioma).
Selecciona Create new runner.
Nombre: runner-proyecto-nuevo
Guarda por separado:
URL de Forgejo.
UUID.
Token.
MUY IMPORTANTE GUARDARLOS, una vez se sale de esta ventana no seran visibles
una vez anotados los datos:
nano runner-config.yml
bajamos hasta encontrar:
labels:
- python-unit:docker://docker.io/library/python:3.12
cambiamos solo la primera parte python-unit: por el nombre que le queramos
poner a la etiqueta de este runner
si bajamos mas encontraremos en el apartado container:
options: >-
--volume /srv/forgejo-runners/proyecto-base/data-proyecto-base:/test-data:ro
--memory=16g
--memory-swap=16g
--cpus=2
--pids-limit=256
--add-host=forgejo.example.com:192.0.2.10
cambiaremos la primera ruta por la ruta de la nueva carpeta data
el dominio y la IP de `--add-host` son ejemplos; usa los de tu servidor solo si necesitas resolverlo de esta forma
los siguientes parametros son de LIMITES de uso del runner
las cpus tal como corren los test se podrian dejar en 1
si bajamos mas nos encontramos con:
valid_volumes:
- /srv/forgejo-runners/proyecto-base/data-proyecto-base
aqui volveremos a poner la nueva ruta de la carpeta data-proyecto-nuevo
y por ultimo al final del todo nos encontraremos con:
connections:
proyecto-nuevo:
url: https://forgejo.example.com/
uuid: "UUID_DEL_RUNNER"
token: "TOKEN_DEL_RUNNER"
aqui cambiaremos el nombre, la URL, el UUID y el token por los datos generados anteriormente
Pasar la carpeta data que usaran los test
Desde la maquina donde tengamos la carpeta data
rsync -avh --progress \
./data/ \
usuario@SERVIDOR:/srv/forgejo-runners/proyecto-nuevo/data-proyecto-nuevo/
la primera ubicación es la carpeta en nuestro PC y la segunda es donde la queremos copiar. Sustituye usuario y SERVIDOR por tus datos de acceso.
Arrancar el runner
con:
cd /srv/forgejo-runners/proyecto-nuevo
sudo docker compose -p proyecto-nuevo up -d
comprobamos el estado:
sudo docker compose -p proyecto-nuevo ps
vemos los logs por si sucedió algún error:
sudo docker compose -p proyecto-nuevo logs --tail=100