Configura ejecutores de GitHub Actions autohospedados en AWS CodeBuild - 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.

Configura ejecutores de GitHub Actions autohospedados en AWS CodeBuild

Puedes configurar tu proyecto para configurar ejecutores de GitHub Actions autohospedados en CodeBuild contenedores para procesar tus trabajos de flujo de trabajo de GitHub Actions. Para ello, puedes configurar un webhook con tu CodeBuild proyecto y actualizar el flujo de trabajo de GitHub Actions (YAML) para que utilice ejecutores autohospedados y alojados en máquinas. CodeBuild Para obtener más información, consulta Acerca de los ejecutores autohospedados.

Los pasos generales para configurar un CodeBuild proyecto para ejecutar tareas de GitHub Actions son los siguientes:

  1. Si aún no lo has hecho, crea un token de acceso personal o conéctate a una aplicación de OAuth a la que conectar tu proyecto. GitHub

  2. Ve a la CodeBuild consola y crea un CodeBuild proyecto con un webhook y configura tus filtros de webhook.

  3. Actualiza el flujo de trabajo de GitHub Actions en YAML GitHub para configurar tu entorno de compilación.

Para obtener un procedimiento más detallado, consulteTutorial: Configurar un ejecutor de acciones CodeBuild autohospedado GitHub .

Esta función permite que sus trabajos de flujo de trabajo de GitHub Actions se integren de forma nativa AWS, lo que proporciona seguridad y comodidad a través de funciones como IAM AWS CloudTrail, AWS Secrets Manager integración y Amazon VPC. Puede acceder a los tipos de instancias más recientes, incluidas las instancias basadas en ARM.

Tutorial: Configurar un ejecutor de acciones CodeBuild autohospedado GitHub

Este tutorial le muestra cómo configurar sus CodeBuild proyectos para ejecutar trabajos de GitHub Actions.

Requisitos previos

Para completar este tutorial, primero debe:

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.

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

      • En Repositorio, selecciona Repositorio en mi GitHub cuenta.

      • En URL de repositorio, especifique https://github.com/user-name/repository-name

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

        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 eventos WORKFLOW_JOB_QUEUED.

    • En Environment (Entorno):

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

    • En Buildspec:

      • Ten en cuenta que se ignorará tu Buildspec. En su lugar, lo CodeBuild anulará para usar comandos que configurarán el ejecutor autohospedado. La responsabilidad principal de este proyecto es configurar un ejecutor autohospedado para ejecutar los trabajos del flujo de trabajo CodeBuild de GitHub Actions.

  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 el flujo de trabajo de GitHub Actions (YAML)

En este paso, actualizarás el archivo YAML del flujo de trabajo de GitHub Actions GitHubpara configurar tu entorno de compilación y utilizar los ejecutores autohospedados de GitHub Actions. CodeBuild Para obtener más información, consulta Cómo usar etiquetas con ejecutores autohospedados.

Actualiza el flujo de trabajo de GitHub Actions (YAML

Ve a la runs-onconfiguración de tu flujo de trabajo de GitHub Actions (YAML) GitHuby 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 el YAML, CodeBuild se pueden invocar trabajos con la configuración de proyecto correcta. Al proporcionar el ID de ejecución, CodeBuild asignará tu 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 <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 Actions se bloquee.

    El siguiente es un ejemplo de un flujo de trabajo YAML de GitHub Actions:

    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 puedes anular la imagen y el tipo de procesamiento en la etiqueta. Esto anulará la configuración del entorno del proyecto. Para anular la configuración del entorno para una compilación informática de Amazon EC2, utilice la siguiente sintaxis:

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

    Para anular la configuración de su entorno para una compilación de procesamiento Lambda, utilice la siguiente sintaxis:

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

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

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

Imágenes de cómputo compatibles

En la etiqueta, puede anular la configuración del entorno de Amazon EC2 utilizando los valores de las tres primeras columnas. CodeBuild proporciona las siguientes imágenes informáticas de Amazon EC2:

Imagen Versión de imagen Tamaño de instancia Plataforma Identificador de imagen Definición

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 N/A

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 N/A

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 N/A

Además, puede anular la configuración del entorno Lambda mediante los siguientes valores. Para obtener más información sobre la computación CodeBuild Lambda, consulte Trabajar con. Trabajar con AWS Lambda computación en AWS CodeBuild CodeBuild admite las siguientes imágenes de procesamiento Lambda:

Tipo de entorno Versión de runtime Tamaño de instancia

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

Para obtener más información, consulte Modos y tipos de computación del entorno de compilación y Imágenes de Docker proporcionadas por CodeBuild.

Paso 3: Revise los 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

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

Acerca de CodeBuild -hosted GitHub Actions Runner

¿Cuándo debo incluir las modificaciones de imagen e instancia en la etiqueta?

Puedes incluir las modificaciones de imagen e instancia en la etiqueta para especificar un entorno de compilación diferente para cada uno de tus trabajos del flujo de trabajo de GitHub Actions. Esto se puede hacer sin necesidad de crear varios CodeBuild proyectos o webhooks. Por ejemplo, esto resulta útil cuando necesitas usar una matriz para tus trabajos de flujo de trabajo.

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
nota

Las comillas pueden ser obligatorias si runs-on tiene varias etiquetas que contienen el contexto de GitHub las acciones.

¿Puedo AWS CloudFormation utilizarla para esta función?

Sí, puedes incluir un grupo de filtros en tu AWS CloudFormation plantilla que especifique un filtro de eventos de trabajo del flujo de trabajo de GitHub Actions en el webhook de tu proyecto.

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

Para obtener más información, consulte Filtra los eventos de GitHub webhook ()AWS CloudFormation.

Si necesitas ayuda para configurar las credenciales del proyecto en tu AWS CloudFormation plantilla, consulta AWS::CodeBuild::SourceCredentialla Guía del AWS CloudFormation usuario para obtener más información.

¿Qué regiones admiten el uso de un ejecutor CodeBuild de GitHub Actions alojado?

CodeBuildLos ejecutores de GitHub Actions alojados en él son compatibles en todas las CodeBuild regiones. Para obtener más información sobre Regiones de AWS dónde CodeBuild está disponible, consulta AWS Servicios por región.

¿Qué plataformas admiten el uso de un CodeBuild ejecutor de GitHub acciones alojado?

CodeBuild-Los ejecutores de GitHub Actions alojados son compatibles tanto con Amazon EC2 AWS Lambdacomo con Compute. Puede utilizar las siguientes plataformas: Amazon Linux 2, Amazon Linux 2023, Ubuntu y Windows Server Core 2019. Para obtener más información, consulte Imágenes de computación de EC2 y Imágenes de computación de Lambda.

Solución de problemas: ¿Cómo soluciono los problemas si el webhook no funciona?

Problema: tu webhook no funciona o tu flujo de trabajo está pendiente. GitHub

Causa posible: es posible que el evento de trabajos de flujo de trabajo de tu webhook no esté activando una compilación. Revisa los registros de respuestas para ver la respuesta o el mensaje de error.

Solución recomendada: para depurar este error, siga las instrucciones siguientes.

  1. Abre la GitHub consola en https://github.com/user-name/repository-name/settings/hooks para ver la configuración de webhook de tu repositorio. En esta página, verás un webhook que se creó para tu repositorio.

  2. Selecciona Editar y comprueba que el webhook está habilitado para publicar eventos de Workflow Jobs.

  3. Vaya a la pestaña Entregas recientes, busque el workflow_job.queued evento correspondiente y amplíe el evento.

  4. Revisa el campo de etiquetas de la carga útil y asegúrate de que está según lo esperado.

  5. Por último, revisa la pestaña Respuesta, ya que contiene la respuesta o el mensaje de CodeBuild error devuelto.