Cada vez más, recurro a Runners de gitLab para construir mis proyectos. Siendo posible automatizar prácticamente toda la configuración (desde generar un tag en Git), es perfectamente posible publicar nuevas versiones de software, generar documentación, correr pruebas automáticamente y subir los resultados de todo eso a algún sitio, por ejemplo Backblaze B2. El resultado es una “pipeline” que da gusto usar, porque simplemente funciona. Al mismo tiempo, se documenta el proceso de creación de cada proyecto en el fichero .gitlab-ci.yml, lo que es útil para ver exactamente los pasos a seguir para llegar a generar alguna versión de las aplicaciones que escribo.
En esta publicación, no obstante, quisiera relatar un poco sobre la experiencia al preparar un nuevo Gitlab Runner. En realidad no es cosa del otro mundo, pues eso está bastante bien explicado en la documentación disponible, pero no quiero olvidar mi caso específico.
Normalmente, siempre preparo un runner con este software instalado:
- Git for Windows.
- Visual Studio 2022 Community Edition (particularmente de aquí elijo la carga de trabajo “Desarrollo para el escritorio con C++”).
- Python 3.10 (para 32 y 64 bits).
- La última versión de PowerShell.
- Chocolatey.
- Y por supuesto, la última versión disponible del Gitlab Runner para Windows.
Aquí están los pasos que sigo para todo esto:
Paso 1. Instalando componentes necesarios
Todos estos componentes son sencillos de instalar. En mi caso, suelo colocar Python en C:\pythonXXX, donde xxx es el número de versión sin el punto (por ejemplo, python310 para python 3.10). Si la versión es para 32 bits, añado un “-32” al final de la ruta.
- Descargar e instalar la última versión de git For Windows. Aquí pueden mantenerse las opciones por defecto.
- Descargar e instalar la versión más reciente de visual Studio Community Edition. Como trabajo principalmente con Python (y ocasionalmente Flutter), solo necesito la carga de trabajo de “Desarrollo para el escritorio con C++”.
- Descargar e instalar las versiones más recientes de Python para 32 y 64 bits. En el ejemplo de instalar Python 3.10, sus rutas en el path quedarían como C:\python310 para la versión de 64 bits, y C:\python310-32 para la de 32.
- Instalar la última versión de PowerShell, ya que el runner de GitLab se quejará si la versión que se encuentra es demasiado baja. Para instalar PowerShell usando WinGet, se puede hacer así:
winget install Microsoft.PowerShell
- Desde PowerShell con privilegios administrativos, instalar chocolatey con el siguiente grupo de órdenes:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Paso 2. Instalar gitlab Runner
Lo último prácticamente es seguir lo escrito en la documentación de GitLab.
- Descargar la última versión para Windows (O para 32 bit)del ejecutable para Gitlab Runner. En la documentación se recomienda renombrar el archivo para que simplemente sea llamado gitlab-runner.exe.
- Crear un directorio para alojar el archivo, por ejemplo C:\gitlab.
- Una vez que gitlab-runner.exe se encuentre en su directorio, mediante una shell, ejecutar el comando para registrarlo:
./gitlab-runner.exe register
- Seguir los pasos que indique el asistente (escribir la URL de la instancia a registrar, pegar el Token que se obtiene en la misma instancia (administración>runners), elegir shell como ejecutor y añadir tags). Una vez terminado este punto, el runner debería haber quedado registrado correctamente.
- Instalar el runner como servicio del sistema, con:
./gitlab-runner.exe install
- Iniciar el servicio manualmente, con:
./gitlab-runner.exe start
En este punto, es recomendable reiniciar el equipo anfitrión antes de poder ejecutar tareas en Gitlab Runner. Una vez reiniciado, todo debería estar operativo y el Runner será perfectamente capaz de tomar cualquier tarea y construir lo que se le pida. Es importante que se utilicen algunas de las tags que se especificaron también en los ficheros .gitlab-ci.yml, para que el runner sea asignado para dichas tareas.