Tutorial: Configurar un CodeBuild ejecutor alojado GitLab - AWS CodeBuild

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Configurar un CodeBuild ejecutor alojado GitLab

Este tutorial le muestra cómo configurar sus CodeBuild proyectos para ejecutar tareas de canalización de GitLab CI/CD. Para obtener más información sobre el uso GitLab o la GitLab autogestión con ella CodeBuild, consulte. Ejecutores autogestionados GitLab en AWS CodeBuild

Para completar este tutorial, primero debe:

  • Conéctese con una OAuth aplicación mediante CodeConnections. Ten en cuenta que cuando te conectes con una OAuth aplicación, debes usar la CodeBuild consola para hacerlo. Para obtener instrucciones adicionales, consulte GitLab acceder en CodeBuild.

  • Conéctate CodeBuild a tu GitLab cuenta. Para ello, puedes añadirlo GitLab como proveedor de fuentes en la consola. Para obtener instrucciones, consulte GitLab acceder en CodeBuild.

    nota

    Esto solo es necesario si no te has conectado GitLab a tu cuenta.

    Con esta función, CodeBuild necesita permisos adicionales, como create_runner y manage_runner desde la GitLab OAuth aplicación. Si existen CodeConnections para una GitLab cuenta en particular, no solicitará automáticamente las actualizaciones de permisos. Para ello, puedes ir a la CodeConnections consola y crear una conexión ficticia con la misma GitLab cuenta para activar la reautorización y obtener los permisos adicionales. De este modo, todas las conexiones existentes pueden utilizar la función Runner. Una vez completada, puede eliminar la conexión ficticia.

Paso 1: Crea un CodeBuild proyecto con un webhook

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

Para crear un CodeBuild proyecto con un webhook
  1. Abre la AWS CodeBuild consola 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 código fuente, selecciona. GitLab

      • En Credencial, elija una de las siguientes opciones:

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

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

        nota

        Si aún no has creado una conexión con tu proveedor, tendrás que crear una nueva GitLab. Para obtener instrucciones, consulte Conectarse CodeBuild a GitLab.

      • En Repositorio, elija el nombre de su proyecto GitLab especificando la ruta del proyecto con el espacio de nombres.

    • En los eventos de webhook de fuente principal:

      • En el caso de Webhook (opcional), selecciona Reconstruir cada vez que se introduzca un cambio de código en este repositorio.

      • En Tipo de evento, selecciona WORKFLOW_ JOB _ QUEUED. Una vez que esté activado, las compilaciones solo se activarán mediante eventos de trabajos en canalización de GitLab CI/CD.

        nota

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

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

      • Elija una imagen de entorno y un proceso de cómputo compatibles. Tenga en cuenta que tiene la opción de anular la configuración de la imagen y la instancia mediante una etiqueta en su canalización de GitLab CI/CD. YAML Para obtener más información, consulte Paso 2: Crea un archivo.gitlab-ci.yml en tu repositorio.

    • En Buildspec:

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

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

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

Paso 2: Crea un archivo.gitlab-ci.yml en tu repositorio

En este paso, crearás un .gitlab-ci.yml archivo para configurar tu entorno de compilación y utilizar ejecutores GitLabautogestionados en él. GitLab CodeBuild Para obtener más información, consulta Cómo usar ejecutores autogestionados.

Actualice su canalización de GitLab CI/CD YAML

Navegue hasta su https://gitlab.com/user-name/project-name/-/tree/branch-name repositorio y cree un .gitlab-ci.yml archivo en él. Puedes configurar tu entorno de compilación mediante una de las siguientes acciones:

  • Puedes especificar el nombre del CodeBuild proyecto, en cuyo caso la compilación utilizará la configuración de proyecto existente para el cálculo, 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 AWS relacionada de tu GitLab trabajo a un CodeBuild proyecto específico. Al incluir el nombre del proyecto en elYAML, CodeBuild se pueden 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_NAMEes necesario para mapear la construcción con tareas de canalización específicas y detener la construcción cuando se cancela la ejecución de la canalización.

    nota

    Asegúrese de que su <project-name> coincide con el nombre del proyecto en el que creaste CodeBuild. Si no coincide, no CodeBuild procesará el webhook y la canalización de GitLab CI/CD podría bloquearse.

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

    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 la imagen y el tipo de cálculo en la etiqueta. Consulte Calcule imágenes compatibles con el ejecutor alojado CodeBuild GitLab para obtener una lista de las imágenes disponibles. El tipo de procesamiento y la imagen de la etiqueta anularán la configuración del entorno del proyecto. Para anular la configuración de su entorno para una compilación de Amazon EC2 Compute, utilice la siguiente sintaxis:

    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 una canalización de GitLab CI/CD: YAML

    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
  • Puedes anular la flota utilizada para tu construcción en la etiqueta. Esto anulará los ajustes de flota configurados en tu proyecto para usar la flota especificada. Para obtener más información, consulte Run se basa en flotas de capacidad reservada. Para anular la configuración de tu flota para una compilación de Amazon EC2 Compute, usa 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 siguiente sintaxis:

    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 una canalización de GitLab CI/CD: YAML

    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 GitLab CI/CD en una imagen personalizada, puede configurar una imagen personalizada en su CodeBuild proyecto y evitar tener que incluir una etiqueta de reemplazo de imagen. CodeBuild utilizará la imagen configurada en el proyecto si no se proporciona una etiqueta de anulación de imagen.

Una vez que confirmes los cambios.gitlab-ci.yml, se activará una GitLab canalización y build-job se enviará una notificación de webhook para iniciar la compilación. CodeBuild

Ejecuta los comandos buildspec en las fasesINSTALL, PRE _ y _ BUILD POST BUILD

De forma predeterminada, CodeBuild omite cualquier comando de buildspec al ejecutar una compilación autogestionada. GitLab Para ejecutar los comandos buildspec durante la compilación, buildspec-override:true puedes añadirlos como sufijo a: tags

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

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

Existen varias limitaciones a la hora de utilizar una modificación de las especificaciones de compilación en una compilación autogestionada: GitLab

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

  • CodeBuild no descargará ninguna fuente primaria o secundaria durante la fase. DOWNLOAD_SOURCE Si tienes un archivo buildspec configurado, solo se descargará ese archivo de la fuente principal del proyecto.

  • Si un comando de compilación falla en la INSTALL fase PRE_BUILD o, no CodeBuild se iniciará el ejecutor autogestionado y será necesario cancelar manualmente la tarea de canalización de GitLab CI/CD.

  • CodeBuild obtiene el token del corredor durante la DOWNLOAD_SOURCE fase, que tiene un tiempo de caducidad de una hora. Si tus PRE_BUILD INSTALL fases superan una hora, el token de corredor puede caducar antes de que comience el corredor GitLab autogestionado.

Paso 3: Revisa tus resultados

Siempre que se trate de un trabajo en GitLab CI/CD pipeline run occurs, CodeBuild would receive the CI/CD pipeline job events through the webhook. For each job in the CI/CD pipeline, CodeBuild starts a build to run an ephemeral GitLab runner. The runner is responsible for executing a single CI/CD canalización. Una vez que se complete el trabajo, el canal y el proceso de construcción asociado finalizarán inmediatamente.

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

Puede revisar las etiquetas solicitadas en el registro mientras el trabajo espera a que lo recoja una persona autogestionada. CodeBuild

Filtra los eventos de los GitLab webhooks ()AWS CloudFormation

La siguiente parte de una AWS CloudFormation plantilla YAML con formato crea un grupo de filtros que activa una compilación cuando se evalúa como verdadera. El siguiente grupo de filtros especifica un nombre de GitLab CI/CD pipeline job request with a CI/CD canalización que 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\]