Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Tutorial: Configuración de un ejecutor de GitLab alojado en CodeBuild

Modo de enfoque
Tutorial: Configuración de un ejecutor de GitLab alojado en CodeBuild - AWS CodeBuild

En este tutorial, se muestra cómo configurar los proyectos de CodeBuild para ejecutar trabajos de canalización de CI/CD de GitLab. Para obtener más información sobre el uso de GitLab o GitLab Self Managed con CodeBuild, consulte Ejecutores de GitLab autoadministrados en AWS CodeBuild.

Para completar este tutorial, primero debe:

  • Conéctese con una aplicación OAuth mediante CodeConnections. Tenga en cuenta que, al conectarse con una app OAuth, debe usar la consola de CodeBuild. Para obtener instrucciones adicionales, consulte Acceso a GitLab en CodeBuild.

  • Conecte CodeBuild a su cuenta de GitLab. Para ello, puede agregar GitLab como proveedor de origen en la consola. Para obtener instrucciones, consulte Acceso a GitLab en CodeBuild.

    nota

    Esto solo es necesario hacerlo si no se ha conectado a GitLab para su cuenta.

    Con esta característica, CodeBuild necesita permisos adicionales, como create_runner y manage_runner de la aplicación OAuth de GitLab. Si existen elementos CodeConnections para una cuenta de GitLab concreta, no solicita las actualizaciones de permisos de forma automática. Para ello, puede ir a la consola de CodeConnections y crear una conexión ficticia con la misma cuenta de GitLab para desencadenar la reautorización y obtener los permisos adicionales. De esta forma, todas las conexiones existentes pueden utilizar la característica del ejecutor. Una vez que se finalice, puede eliminar la conexión ficticia.

Paso 1: Crear un proyecto de CodeBuild con un webhook

En este paso, va a crear un proyecto de CodeBuild con un webhook y lo revisará en la consola de GitLab.

Para crear un proyecto de CodeBuild con un webhook
  1. Abra la consola de AWS CodeBuild en https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Cree un proyecto de compilación. Para obtener más información, consulte Creación de un proyecto de compilación (consola) y Ejecutar una compilación (consola).

    • En Source (Código fuente):

      • En Proveedor de origen, elija GitLab.

      • En Credencial, elija una de las opciones siguientes:

        • Elija Credencial de origen predeterminada. La conexión predeterminada aplica una conexión de GitLab predeterminada en todos los proyectos.

        • Elija Credencial de origen personalizada. La conexión personalizada aplica una conexión de GitLab personalizada que anula la configuración predeterminada de su cuenta.

        nota

        Si aún no ha creado una conexión con su proveedor, deberá crear una conexión de GitLab. Para obtener instrucciones, consulte Conexión de CodeBuild a GitLab.

      • En Repositorio, elija el nombre de su proyecto en GitLab y, para ello, especifique la ruta del proyecto con el espacio de nombres.

    • En Eventos de webhook de origen principal:

      • En Webhook (opcional), seleccione Rebuild every time a code change is pushed to this repository.

      • En Tipo de evento, seleccione WORKFLOW_JOB_QUEUED. Una vez habilitada esta opción, las compilaciones solo se desencadenarán mediante eventos de trabajos de canalización de CI/CD de GitLab.

        nota

        CodeBuild solo procesará los eventos de trabajos de canalización de CI/CD de GitLab si un webhook tiene grupos de filtros que contengan el filtro de eventos WORKFLOW_JOB_QUEUED.

        Compile la configuración para que solo se desencadene mediante eventos de trabajos de canalización de CI/CD de GitLab.
    • En Environment (Entorno):

      • Elija una Imagen del entorno y una Computación compatibles. Tenga en cuenta que tiene la opción de anular la configuración de imagen e instancia mediante una etiqueta en el YAML de la canalización de CI/CD de GitLab. Para obtener más información, consulte Paso 2: Crear un archivo .gitlab-ci.yml en el repositorio.

    • En Buildspec:

      • Tenga en cuenta que su especificación de compilación se ignorará a menos que se agregue buildspec-override:true como etiqueta. En su lugar, CodeBuild la anulará para usar comandos que configurarán el ejecutor autoadministrado.

  3. Continúe con los valores predeterminados y, a continuación, elija Crear el proyecto de compilación.

  4. Abra la consola de GitLab en https://gitlab.com/user-name/repository-name/-/hooks para comprobar que se ha creado un webhook y que está habilitado para entregar eventos Workflow jobs.

Paso 2: Crear un archivo .gitlab-ci.yml en el repositorio

En este paso, va a crear un archivo .gitlab-ci.yml en GitLab para configurar su entorno de compilación y usar ejecutores autoadministrados de GitLab en CodeBuild. Para obtener más información, consulte Uso de ejecutores autoadministrados.

Actualización del YAML de canalización de CI/CD de GitLab

Desplácese a https://gitlab.com/user-name/project-name/-/tree/branch-name y cree un archivo .gitlab-ci.yml en su repositorio. Para configurar el entorno de compilación, realice una de las siguientes acciones:

  • Puede especificar el nombre del proyecto de CodeBuild, en cuyo caso la compilación utilizará la configuración de proyecto existente para la computación, la imagen, la versión de la imagen y el tamaño de la instancia. El nombre del proyecto es necesario para vincular la configuración relacionada con AWS de su trabajo de GitLab a un proyecto de CodeBuild específico. Al incluir el nombre del proyecto en el YAML, CodeBuild puede invocar trabajos con la configuración de proyecto correcta.

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

    $CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME es necesario para asignar la compilación a ejecuciones específicas de trabajos de canalización y detener la compilación cuando se cancele la ejecución de la canalización.

    nota

    Asegúrese de que el valor de <project-name> coincida con el nombre del proyecto que ha creado en CodeBuild. Si no coincide, CodeBuild no procesará el webhook y la canalización de CI/CD de GitLab puede dejar de responder.

    El siguiente es un ejemplo de YAML de canalización de CI/CD de GitLab:

    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-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  • También puede anular el tipo de computación e imagen en la etiqueta. Consulte Imágenes de computación compatibles con el ejecutor de GitLab alojado en CodeBuild para obtener una lista de las imágenes disponibles. El tipo de computación y la imagen de la etiqueta anularán la configuración del entorno en el proyecto. Si quiere anular la configuración del entorno para una compilación de computación de Amazon EC2, utilice la sintaxis siguiente:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    El siguiente es un ejemplo de YAML de canalización de CI/CD de GitLab:

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:arm-3.0 - instance-size:small
  • Puede anular la flota utilizada para su compilación en la etiqueta. Al hacerlo, se anularán los valores de flota configurados en el proyecto para usar la flota especificada. Para obtener más información, consulte Ejecución de compilaciones en flotas de capacidad reservada. Si quiere anular la configuración de la flota para una compilación de computación de Amazon EC2, utilice la siguiente sintaxis:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name>

    Para anular tanto la flota como la imagen utilizadas para la compilación, utilice la sintaxis siguiente:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    El siguiente es un ejemplo de YAML de canalización de CI/CD de GitLab:

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:myFleet - image:arm-3.0
  • Para ejecutar sus trabajos de canalización de CI/CD de GitLab en una imagen personalizada, puede configurar una imagen personalizada en su proyecto de CodeBuild y evitar tener que proporcionar una etiqueta de anulación de imagen. CodeBuild usará la imagen configurada en el proyecto si no se proporciona ninguna etiqueta de anulación de imagen.

Tras confirmar los cambios en .gitlab-ci.yml, se desencadenará una canalización de GitLab y build-job enviará una notificación de webhook que iniciará su compilación en CodeBuild.

Ejecución de comandos buildspec durante las fases INSTALL, PRE_BUILD y POST_BUILD

De forma predeterminada, CodeBuild ignora cualquier comando buildspec al ejecutar una compilación de GitLab autoadministrada. Para ejecutar comandos buildspec durante la compilación, se puede agregar buildspec-override:true como sufijo a tags:

tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - buildspec-override:true

Con este comando, CodeBuild creará una carpeta llamada gitlab-runner en la carpeta de origen principal del contenedor. Cuando el ejecutor de GitLab se inicia durante la fase BUILD, el ejecutor se activará en el directorio gitlab-runner.

Existen varias limitaciones al usar una anulación de buildspec en una compilación de GitLab autoadministrada:

  • CodeBuild no ejecutará comandos buildspec durante la fase BUILD, ya que el ejecutor autoadministrado se ejecuta en la fase BUILD.

  • CodeBuild no descargará ningún origen principal o secundario durante la fase DOWNLOAD_SOURCE. Si ha configurado un archivo buildspec, solo se descargará ese archivo del origen principal del proyecto.

  • Si un comando de compilación genera un error en la fase PRE_BUILD o INSTALL, CodeBuild no iniciará el ejecutor autoadministrado y el trabajo de canalización de CI/CD de GitLab deberá cancelarse de forma manual.

  • CodeBuild obtiene el token del ejecutor durante la fase DOWNLOAD_SOURCE, que tiene un tiempo de vencimiento de una hora. Si las fases PRE_BUILD o INSTALL duran más de una hora, el token del ejecutor puede caducar antes de que se inicie el ejecutor autoadministrado de GitLab.

Paso 3: Revisar los resultados

Siempre que se ejecute una canalización de CI/CD de GitLab, CodeBuild recibirá los eventos de trabajo de la canalización de CI/CD a través del webhook. Para cada trabajo de la canalización de CI/CD, CodeBuild inicia una compilación para utilizar un ejecutor efímero de GitLab. El ejecutor es responsable de ejecutar un único trabajo de canalización de CI/CD. Una vez que se complete el trabajo, el ejecutor y el proceso de compilación asociado finalizarán de forma inmediata.

Para ver los registros de los trabajos de canalización de CI/CD, navegue hasta el repositorio en GitLab, elija Build, Jobs y, a continuación, elija el elemento Job específico para el que quiera revisar los registros.

Puede revisar las etiquetas solicitadas en el registro mientras el trabajo espera a que lo seleccione un ejecutor autoadministrado en CodeBuild.

Filtrado de eventos de webhook en GitLab (AWS CloudFormation)

La siguiente parte de una plantilla de AWS CloudFormation con formato YAML crea un grupo de filtros que desencadena una compilación cuando se evalúa como true. El siguiente grupo de filtros especifica una solicitud de trabajo de canalización de CI/CD de GitLab cuyo nombre de canalización de CI/CD coincide con la expresión regular \[CI-CodeBuild\].

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITLAB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: group-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.