Tutorial: Configurar un CodeBuild ejecutor de GitHub acciones alojado - 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 de GitHub acciones alojado

Este tutorial le muestra cómo configurar sus CodeBuild proyectos para ejecutar trabajos de GitHub Actions. Para obtener más información sobre el uso de GitHub Actions con, CodeBuild consulteTutorial: Configurar un CodeBuild ejecutor de GitHub acciones alojado.

Para completar este tutorial, primero debe:

  • Conéctate con un token de acceso personal, un secreto, una aplicación o GitHub una OAuth aplicación de Secrets Manager. Si quieres conectarte con una OAuth aplicación, debes usar la CodeBuild consola para hacerlo. Si quieres crear un token de acceso personal, puedes usar la CodeBuild consola o usar la ImportSourceCredentials API. Para obtener instrucciones adicionales, consulte GitHub y acceso a GitHub Enterprise Server en CodeBuild.

  • Conéctate CodeBuild a tu GitHub cuenta. Para ello, puede hacer una de las acciones siguientes:

    nota

    Esto solo debe hacerse si no te has conectado GitHub a tu cuenta.

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 GitHub consola. También puedes elegir GitHub Enterprise como tu proveedor de código fuente. Para obtener más información sobre cómo crear un webhook en GitHub Enterprise, consulteGitHub webhooks manuales.

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. GitHub

      • En Repositorio, selecciona Repositorio en mi GitHub cuenta.

      • Para Repositorio URL, introduzcahttps://github.com/user-name/repository-name.

      nota

      De forma predeterminada, su proyecto solo recibirá WORKFLOW_JOB_QUEUED los eventos de un único repositorio. Si quieres recibir eventos para todos los repositorios de una organización o empresa, consultaGitHub webhooks globales y organizativos.

    • 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 activado, las compilaciones solo se activarán mediante eventos de tareas del flujo de trabajo de GitHub Actions.

        nota

        CodeBuild solo procesará los eventos de los trabajos del flujo de trabajo de GitHub Actions si un webhook tiene grupos de filtros que contengan el filtro de QUEUED eventos WORKFLOWJOB_ _.

        Cree la configuración para que solo la activen los eventos de trabajos del flujo de trabajo de GitHub Actions.
    • En Environment (Entorno):

      • Elija una imagen de entorno y un proceso compatibles. Ten en cuenta que tienes la opción de anular la configuración de la imagen y la instancia mediante una etiqueta en tu flujo YAML de trabajo de GitHub Actions. Para obtener más información, consulte Paso 2: actualiza tu flujo de trabajo de GitHub Actions YAML

    • En Buildspec:

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

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

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

Paso 2: actualiza tu flujo de trabajo de GitHub Actions YAML

En este paso, actualizarás tu YAML archivo de flujo de trabajo de GitHub Actions GitHubpara configurar tu entorno de compilación y utilizar los ejecutores autohospedados de GitHub Actions en CodeBuild ellos. Para obtener más información, consulta Uso de etiquetas con ejecutores autohospedados y. El ejecutor Actions alojado en Actions admite anulaciones de CodeBuild etiquetas GitHub

Actualiza tu flujo de trabajo de GitHub Actions YAML

Navega hasta la runs-onconfiguración de tu flujo de trabajo de GitHub Actions GitHuby YAML actualízala para configurar tu entorno de compilación. Para ello, puede hacer una de las acciones siguientes:

  • Puedes especificar el nombre del proyecto y el ID de ejecución, 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 trabajo de GitHub Actions 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. Al proporcionar el ID de ejecución, CodeBuild asignará la compilación a ejecuciones de flujo de trabajo específicas y detendrá la compilación cuando se cancele la ejecución del flujo de trabajo. Para obtener más información, consulta githubel contexto.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    nota

    Asegúrese de que su <project-name> coincide con el nombre del proyecto que creó en el paso anterior. Si no coincide, no CodeBuild procesará el webhook y es posible que el flujo de trabajo de GitHub Acciones se bloquee.

    A continuación, se muestra un ejemplo de un flujo YAML de trabajo de GitHub Acciones:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • También puede anular la imagen y el tipo de cálculo en la etiqueta. Consulte Calcule las imágenes compatibles con el CodeBuild ejecutor Actions alojado GitHub 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 procesamiento Lambda CodeBuild EC2 o Lambda, utilice la siguiente sintaxis:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    A continuación, se muestra un ejemplo de un flujo de trabajo de GitHub Actions: YAML

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • 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:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name>

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

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    A continuación, se muestra un ejemplo de un flujo YAML de trabajo de GitHub Actions:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • Para ejecutar sus trabajos de GitHub Actions 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.

  • Si lo desea, puede proporcionar etiquetas distintas de las CodeBuild compatibles. Estas etiquetas se ignorarán con el fin de anular los atributos de la compilación, pero no rechazarán la solicitud de webhook. Por ejemplo, añadirlas testLabel como etiqueta no impedirá que la compilación se ejecute.

nota

Si una dependencia proporcionada por los GitHub ejecutores alojados no está disponible en el CodeBuild entorno, puedes instalarla mediante GitHub Actions en la ejecución de tu flujo de trabajo. Por ejemplo, puedes usar la setup-pythonacción para instalar Python en tu entorno de compilación.

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

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

runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - buildspec-override:true

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

Existen varias limitaciones a la hora de utilizar una modificación de las especificaciones de compilación en una compilación de Actions autohospedada: GitHub

  • CodeBuild no ejecutará los comandos buildspec durante la fase, ya que el ejecutor autohospedado 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 autohospedado y será necesario cancelar manualmente el trabajo del flujo de trabajo de GitHub Actions.

  • CodeBuild obtiene el token del ejecutor durante la DOWNLOAD_SOURCE fase, que tiene un plazo 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 GitHub autohospedado.

Paso 3: Revisa tus resultados

Siempre que se ejecute un flujo de trabajo de GitHub Actions, CodeBuild recibirá los eventos del trabajo del flujo de trabajo a través del webhook. Para cada trabajo del flujo de trabajo, CodeBuild inicia una compilación para ejecutar un ejecutor efímero GitHub de Actions. El ejecutor es responsable de ejecutar un único trabajo de flujo de trabajo. Una vez que se complete el trabajo, el ejecutor y el proceso de creación asociado finalizarán inmediatamente.

Para ver los registros de trabajos de tu flujo de trabajo, navega hasta tu repositorio, selecciona Acciones, elige el flujo de trabajo que desees y, a continuación, elige el trabajo específico para el que quieres revisar los registros. GitHub

Puedes revisar las etiquetas solicitadas en el registro mientras el trabajo está esperando a que lo recoja un agente autohospedado. CodeBuild

Cargando el registro del trabajo.

Una vez que se haya completado el trabajo, podrá ver el registro del trabajo.

El registro del trabajo.

GitHub Acciones de filtrado y eventos del webhook ()AWS CloudFormation

La siguiente parte de una AWS CloudFormation plantilla con el siguiente YAML formato crea un grupo de filtros que activa una compilación cuando se evalúa como verdadera. El siguiente grupo de filtros especifica una solicitud de trabajo de flujo de trabajo de GitHub Actions con un nombre de flujo de trabajo que coincide con la expresión normal. \[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: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]

Filtrar GitHub acciones (webhook events)AWS CDK

La siguiente AWS CDK plantilla crea un grupo de filtros que activa una compilación cuando se evalúa como verdadera. El siguiente grupo de filtros especifica una solicitud de trabajo del flujo de trabajo de GitHub Actions.

import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })

Filtrar GitHub acciones y eventos de webhook (Terraform)

La siguiente plantilla de Terraform crea un grupo de filtros que activa una compilación cuando se evalúa como verdadera. El siguiente grupo de filtros especifica una solicitud de trabajo del flujo de trabajo de GitHub Actions.

resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }