Skip to main content

Runner

A GitLab Runner is a fundamental part of GitLab's CI/CD (Continuous Integration and Continuous Delivery) system. It functions as an entity that is responsible for executing specific jobs defined in the files .gitlab-ci.yml. Runners allow the automation of tasks, tests and deployments in a development environment, all managed through GitLab. Here are some of its main features:

  1. Ejecución de trabajos: Los Runners ejecutan los trabajos definidos en los archivos .gitlab-ci.yml. These jobs may include tasks such as code building, unit testing, static code analysis and deployments.
  2. Multi-platform: Runners are versatile and can run on a variety of operating systems and architectures, allowing compatibility with different types of projects and environments.
  3. Scalability: You can configure multiple Runners for a single project or even for multiple projects, allowing you to scale and distribute the workload as needed.
  4. Docker: Los Runners de GitLab son compatibles con Docker, lo que facilita la creación de entornos de prueba y despliegues de aplicaciones en contenedores.
  5. Security: GitLab offers advanced security options for Runners, including secure authentication and authorization to ensure that only authorized users can run jobs in Runners.
  6. Parallelism: Runners can run jobs in parallel, which speeds up the CI/CD process by distributing tasks across multiple Runners if necessary.
  7. Customization: Runners can be configured and customized to meet the specific needs of your project, allowing you to define custom environments, environment variables and execution requirements.
  8. Monitorización y registro: GitLab proporciona herramientas de monitorización y registro para que puedas rastrear el estado y el rendimiento de tus Runners, lo que facilita la detección y solución de problemas.
  9. Escenarios de despliegue complejos: Los Runners permiten la automatización de flujos de trabajo complejos de CI/CD que abarcan múltiples etapas, desde la construcción hasta las pruebas y el despliegue en diferentes entornos.

Installation

Official GitLab repositories

Para instalar un runner de GitLab, primero debemos agregar el repositorio oficial de GitLab a nuestro sistema. Esto se puede hacer ejecutando los siguientes comandos:

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

Luego, instalamos el paquete del runner de GitLab con el siguiente comando:

sudo apt-get install gitlab-runner

Una vez instalado, podemos verificar que el runner se haya instalado correctamente ejecutando:

gitlab-runner --version

Esto debería mostrar la versión del runner de GitLab que acabamos de instalar.

Registro del Runner

Para registrar el runner, necesitamos un token de registro que podemos obtener desde la interfaz de usuario de GitLab. Este token se encuentra en la sección de configuración del proyecto o grupo donde queremos registrar el runner.

Obtener token de registro

Una vez que tengamos el token, podemos proceder a registrar el runner. Para ello, ejecutamos el siguiente comando:

sudo gitlab-runner register  --url https://gitlab.com  --token glrt-1G9u9XWWFnAeQPSH8KXXXXXXXXXXXwFw.01.1i1rubub7

GitLab runner

Kubernetes

Para proceder a la instalacion del runner de GitLab en nuestra plataforma como con otras herramientas primero necesitamos revisar el values yaml en el siguiente repo https://gitlab.com/gitlab-org/charts/gitlab-runner/blob/main/values.yaml, para asi poder ver los valores que deseamos utilizar en nuestro despliegue.

Then we proceed to create our own or copy the previous one.

We must add to the yaml the token we get from gitlab to register the runner in our cluster

runnerRegistrationToken: "glrt-FQX6FNEB6_vNUQkxnQFt"

We also proceed to add the following settings in order to have the cache and docker in docker enabled

config: |
[[runners]]
[runners.kubernetes]
namespace = "namespace del gitlab-runner"
image = "ubuntu:latest"
[[runners.kubernetes.volumes.host_path]]
name = "docker-socket"
mount_path = "/var/run/docker.sock"
read_only = false
host_path = "/var/run/docker.sock"
[runners.cache]
Type = "s3"
Shared = true
[runners.cache.s3]
ServerAddress = "S3_ADDRESS"
AccessKey = "ACCESSKEY"
SecretKey = "SECRETKEY"
BucketName = "BUCKETNAME"
BucketLocation = "BUCKET_LOCATION"
Insecure = false

Una vez configurado el archivo, proceder con la instalación utilizando Helm:

helm repo add gitlab https://charts.gitlab.io

helm upgrade --install -n gitlab-runner gitlab-runner -f values.yaml gitlab/gitlab-runner --create-namespace

Detalles del comando anterior:

  • -- install permite instalar Harbor si no está instalado, o actualizarlo si ya existe.
  • --create-namespace crea el namespace gitlab-runner en Kubernetes si no existe.
  • -f values.yaml indica el archivo de configuración personalizado que se utilizará para la instalación.
  • -n gitlab-runner es el nombre del namespace donde se instalará el runner de GitLab.