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:
-
Puedes añadirlo GitHub como proveedor de fuentes en la consola. Puedes conectarte con un token de acceso personal, un secreto de Secrets Manager, una OAuth aplicación o una GitHub aplicación. Para obtener instrucciones, consulte GitHub y acceso a GitHub Enterprise Server en CodeBuild.
-
Puede importar sus GitHub credenciales a través del ImportSourceCredentials API. Esto solo se puede hacer con un token de acceso personal. Si se conecta mediante una OAuth aplicación, debe conectarse mediante la consola en su lugar. Para obtener instrucciones, consulte Conéctese GitHub con un token de acceso (CLI) .
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
-
Abre la AWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home
. -
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, introduzca
https://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_ _.
-
-
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.
-
-
-
Continúe con los valores predeterminados y, a continuación, elija Crear proyecto de compilación.
-
Abre la GitHub consola en
https://github.com/
para comprobar que se ha creado un webhook y que está habilitado para entregar eventos de Workflow Jobs.user-name
/repository-name
/settings/hooks
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 GitHub
Actualiza tu flujo de trabajo de GitHub Actions YAML
Navega hasta la runs-on
GitHub
-
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
github
el 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-python
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
fasePRE_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 tusPRE_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
Una vez que se haya completado el trabajo, podrá ver 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" } } }