Gitlab + AWS CodeBuild: Managed Gitlab runners
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.
2. Selecciona GitLab como proveedor, ingresa un nombre para la conexión, y haz clic en Connect to GitLab.
3. Autoriza la conexión en GitLab haciendo clic en el botón Authorize AWS Connector for GitLab.
4. Haz clic en el botón de Connect.
5. La conexión está lista y deberias poder visualizarla.
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.
2. Ingresa un nombre para el proyecto. Yo estoy nombrandolo gitlab-runner.
3. En la sección Managed default source credentials selecciona GitLab como Source Provider.
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.
5. Debemos seleccionar el CodeConnection que configuramos en la sección previa y hacer clic en Save.
6. Luego deberemos seleccionar el repositorio de GitLab con el que queramos trabajar.
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.
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:
- 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_NAMEEn 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_NAMEVer 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.
- También puedes verificar la ejecución en AWS CodeBuild revisando el proyecto que creaste previamente.
¡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.









