Sitemap
Caleidos

Nos enfocamos en la innovación a través de la tecnología, construyendo soluciones que permitan generar un impacto positivo y cambio en las organizaciones. Partners de Amazon Web Services.

Gitlab + AWS CodeBuild: Managed Gitlab runners

5 min readSep 30, 2024

--

Press enter or click to view image in full size

Uno de los retos que enfrentamos en la integración continua es cuando necesitamos que nuestros procesos de construcción y prueba accedan a recursos que están dentro de nuestra VPC (Virtual Private Cloud), como servicios internos o APIs que no son accesibles desde internet. Un ejemplo de esta situación es la integración con herramientas de análisis de código como SonarQube que están alojadas en redes privadas.

Tradicionalmente, para solucionar esto, muchas organizaciones optan por usar agentes de integración continua personalizados, como runners de GitLab alojados en instancias EC2. Si bien esta solución puede ser eficaz, también presenta varios inconvenientes operativos. Debes encargarte de gestionar las instancias EC2, monitorear su disponibilidad y rendimiento, así como encargarte de las actualizaciones de seguridad y la escalabilidad. Este proceso puede convertirse en una carga operativa significativa a largo plazo.

¡Pero no te preocupes! Ahora existe una mejor manera de hacer esto con AWS CodeBuild y su nueva funcionalidad que permite usarlo como un managed GitLab runner con acceso a los recursos de tu VPC. Veamos cómo esta nueva característica puede simplificar enormemente tu flujo de trabajo de integración continua.

Crear la conexión entre Gitlab y CodeBuild

El primer paso que tenemos que realizar es conectar la cuenta de GitLab con los servicios de Code de AWS. Para realizar eso vamos a buscar el servicio de CodeBuild en la consola.

1. En la consola de AWS CodeBuild, ve a Settings > Connections y haz clic en Create Connection.

Press enter or click to view image in full size

2. Selecciona GitLab como proveedor, ingresa un nombre para la conexión, y haz clic en Connect to GitLab.

Press enter or click to view image in full size

3. Autoriza la conexión en GitLab haciendo clic en el botón Authorize AWS Connector for GitLab.

Press enter or click to view image in full size

4. Haz clic en el botón de Connect.

Press enter or click to view image in full size

5. La conexión está lista y deberias poder visualizarla.

Press enter or click to view image in full size

Crear un proyecto de CodeBuild

Sigue estos pasos para configurar un proyecto de CodeBuild que utilice GitLab como proveedor de código fuente:

Get Claudia Márquez’s stories in your inbox

Join Medium for free to get updates from this writer.

1. En la barra de navegación despliega la opción Build > Build Projects y haz clic en el botón Create build project.

Press enter or click to view image in full size

2. Ingresa un nombre para el proyecto. Yo estoy nombrandolo gitlab-runner.

Press enter or click to view image in full size

3. En la sección Managed default source credentials selecciona GitLab como Source Provider.

Press enter or click to view image in full size

4. La primera vez que creamos el proyecto debemos configurar la conexión, para heco debemos hacer clic en la opción Managed default source credentials.

Press enter or click to view image in full size

5. Debemos seleccionar el CodeConnection que configuramos en la sección previa y hacer clic en Save.

Press enter or click to view image in full size

6. Luego deberemos seleccionar el repositorio de GitLab con el que queramos trabajar.

Press enter or click to view image in full size

7. En la sección Primary source webhook events, debemos seleccionar la opción Rebuild every time a code change is pushed to this repository. En la opción Event Type debemos elegir WORKFLOW_JOB_QUEUED.

Press enter or click to view image in full size

8. Deja las configuraciones restantes como predeterminadas y haz clic en Create build project para finalizar la creación del proyecto.

Crear el Pipeline en GitLab

El siguiente paso es configurar el pipeline en GitLab para ejecutar las tareas de CI/CD utilizando AWS CodeBuild. Sigue estos pasos para crear y configurar el archivo del pipeline:

  1. En la raíz de tu repositorio de GitLab, crea un archivo llamado .gitlab-ci.yml con el siguiente contenido:
workflow:
name: HelloWorld
stages: # List of stages for jobs, and their order of execution
- build

build-job: # This job runs in the build stage, which runs first.
stage: build
script:
- echo "Hello World!"
tags:
- codebuild-gitlab-runner-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

En el archivo, asegúrate de reemplazar la palabra “gitlab-runner” por el nombre de tu propio proyecto de CodeBuild. El resto del tag puede quedar tal como está, ya que las variables como $CI_PROJECT_ID, $CI_PIPELINE_IID y $CI_JOB_NAME serán automáticamente asignadas por GitLab.

Ejemplo:

tags:
- codebuild-mi-proyecto-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

Ver el Pipeline en Acción

Una vez que hayas guardado el archivo .gitlab-ci.yml, GitLab comenzará a ejecutar el pipeline. Para verificarlo:

  • En GitLab, ve a la sección Build > Job dentro de tu repositorio y selecciona el job recién creado. Podrás ver los detalles de la ejecución.
Press enter or click to view image in full size
  • También puedes verificar la ejecución en AWS CodeBuild revisando el proyecto que creaste previamente.
Press enter or click to view image in full size

¡Eso es todo! Con esta configuración, podrás utilizar AWS CodeBuild para gestionar los trabajos de CI/CD de GitLab, aprovechando la infraestructura gestionada de AWS.

--

--

Published in Caleidos

Nos enfocamos en la innovación a través de la tecnología, construyendo soluciones que permitan generar un impacto positivo y cambio en las organizaciones. Partners de Amazon Web Services.