

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 ejecutor de CodeBuild Actions alojado GitHub
<a name="action-runner"></a>

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 consulte[Tutorial: Configurar un ejecutor de CodeBuild Actions alojado GitHub](#action-runner).<a name="sample-github-action-runners-prerequisites"></a>

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 la [ImportSourceCredentials API](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ImportSourceCredentials.html). Para obtener instrucciones adicionales, consulte [GitHub y acceso a GitHub Enterprise Server en CodeBuild](access-tokens-github-overview.md).
+ 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](access-tokens-github-overview.md).
  + Puedes importar tus GitHub credenciales a través de la [ImportSourceCredentials API](https://docs.aws.amazon.com/cli/latest/reference/codebuild/import-source-credentials.html). 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)](access-tokens-github.md#access-tokens-github-cli).
**nota**  
Esto solo debe hacerse si no te has conectado GitHub a tu cuenta.

## Paso 1: Crea un CodeBuild proyecto con un webhook
<a name="sample-github-action-runners-create-project"></a>

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, consulte[GitHub webhooks manuales](github-manual-webhook.md).

**Para crear un CodeBuild proyecto con un webhook**

1. Abre la AWS CodeBuild consola en [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Cree un proyecto de compilación. Para obtener más información, consulte [Creación de un proyecto de compilación (consola)](create-project.md#create-project-console) y [Ejecutar una compilación (consola)](run-build-console.md).

1. En **Tipo de proyecto**, seleccione **Proyecto de ejecutor**.

   En **Ejecutor**:

   1. Para el **proveedor Runner**, selecciona. **GitHub**

   1. En **Ubicación del ejecutor**, seleccione **Repositorio**.

   1. Para la URL del repositorio en **Repositorio**, elige **https://github.com/user-name/repository-name**.
**nota**  
De forma predeterminada, el proyecto únicamente recibirá eventos `WORKFLOW_JOB_QUEUED` para un solo repositorio. Si quiere recibir eventos para todos los repositorios de una organización o empresa, consulte [GitHub webhooks globales y organizativos](github-global-organization-webhook.md).

1. 
   +  En **Environment (Entorno)**: 
     + Elija una **Imagen del entorno** y una **Computación** 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 Actions (YAML). GitHub Para obtener más información, consulte [Paso 2: actualiza el flujo de trabajo de GitHub Actions (YAML)](#sample-github-action-runners-update-yaml)
   +  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, la CodeBuild anulará para usar comandos que configurarán el ejecutor autohospedado.

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

1. 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)
<a name="sample-github-action-runners-update-yaml"></a>

En este paso, actualizarás el archivo YAML del flujo de trabajo de GitHub Actions [https://github.com/](https://github.com/)para configurar tu entorno de compilación y utilizar los ejecutores autohospedados de GitHub Actions. CodeBuild Para obtener más información, consulte [Uso de etiquetas con ejecutores autohospedados](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners) y [El ejecutor Actions hospedado admite anulaciones CodeBuild de GitHub etiquetas](sample-github-action-runners-update-labels.md).

### Actualiza tu flujo de trabajo de GitHub Acciones (YAML)
<a name="sample-github-action-runners-update-yaml.setup"></a>

Ve a la [https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners)configuración de tu flujo de trabajo de GitHub Actions (YAML) [https://github.com/](https://github.com/)y actualízala para configurar tu entorno de compilación. Para ello, puede hacer una de las acciones siguientes:
+ Puede especificar el nombre del proyecto y el ID de ejecución, en cuyo caso la compilación usará 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 los ajustes AWS relacionados con 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, consulte el [contexto de `github`](https://docs.github.com/en/actions/learn-github-actions/contexts#github-context).

  ```
  runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
  ```
**nota**  
Asegúrate de que *<project-name>* coincide con el nombre del proyecto que creaste 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 puede anular el tipo de computación e imagen en la etiqueta. Consulte [Calcule imágenes compatibles con el CodeBuild ejecutor Actions alojado GitHub](sample-github-action-runners-update-yaml.images.md) para ver una lista de imágenes seleccionadas. Para usar imágenes personalizadas, consulte [El ejecutor Actions hospedado admite anulaciones CodeBuild de GitHub etiquetas](sample-github-action-runners-update-labels.md). El tipo de computación y la imagen de la etiqueta anularán la configuración del entorno en el proyecto. Para anular la configuración de su entorno para una compilación de procesamiento 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>
  ```

  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 }}
          image:arm-3.0
          instance-size:small
      steps:
        - run: echo "Hello World!"
  ```
+ 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](fleets.md). Si quiere anular la configuración de la flota para una compilación de computación de Amazon EC2, utilice 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 sintaxis siguiente:

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

  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 }}
          fleet:myFleet
          image:arm-3.0
      steps:
        - run: echo "Hello World!"
  ```
+ Para ejecutar tus trabajos de GitHub Actions en una imagen personalizada, puedes configurar una imagen personalizada en tu 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 para el fin de anular los atributos de la compilación, pero no provocarán un error de la solicitud de webhook. Por ejemplo, agregar `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, puede instalarla mediante GitHub Actions en la ejecución del flujo de trabajo. Por ejemplo, puede usar la acción [https://github.com/actions/setup-python](https://github.com/actions/setup-python) para instalar Python en su entorno de compilación.

### Ejecución de comandos buildspec durante las fases INSTALL, PRE\$1BUILD y POST\$1BUILD
<a name="sample-github-action-runners-update-yaml.buildspec"></a>

De forma predeterminada, CodeBuild omite cualquier comando de buildspec al ejecutar una compilación de Actions autohospedada. GitHub Para ejecutar comandos buildspec durante la compilación, se puede agregar `buildspec-override:true` 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 origen `actions-runner` 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 ha configurado un archivo buildspec, solo se descargará ese archivo del origen 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: revisión de los resultados
<a name="sample-github-action-runners-verify"></a>

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. Este es responsable de ejecutar un único trabajo del flujo de trabajo. 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 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

![\[El registro del trabajo se carga.\]](http://docs.aws.amazon.com/es_es/codebuild/latest/userguide/images/hello-world-loading.png)


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

![\[El registro del trabajo\]](http://docs.aws.amazon.com/es_es/codebuild/latest/userguide/images/hello-world-log.png)


## GitHub Opciones de configuración del ejecutor de acciones
<a name="sample-github-action-runners-config"></a>

Puede especificar las siguientes variables de entorno en la configuración del proyecto para modificar la configuración de instalación de los ejecutores autoalojados.

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME`  
CodeBuild registrará a los corredores autohospedados con el nombre de la organización especificado como valor de esta variable de entorno. Para obtener más información sobre el registro de los corredores a nivel de la organización y los permisos necesarios, consulte [Crear la configuración de un just-in-time corredor para una organización](https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#create-configuration-for-a-just-in-time-runner-for-an-organization).

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME`  
CodeBuild registrará los corredores autohospedados con el nombre de empresa especificado como valor de esta variable de entorno. Para obtener más información sobre el registro de los ejecutores a nivel empresarial y los permisos necesarios, consulte [Crear la configuración de un just-in-time ejecutor para una empresa](https://docs.github.com/en/enterprise-server/rest/actions/self-hosted-runners?apiVersion=2022-11-28#create-configuration-for-a-just-in-time-runner-for-an-enterprise).  
De forma predeterminada, los ejecutores empresariales no están disponibles en los repositorios de la organización. Para que los ejecutores autoalojados recojan trabajos de flujos de trabajo, es posible que deba configurar los ajustes de acceso al grupo de ejecutores. Para obtener más información, consulte [Making enterprise runners available to repositories](https://docs.github.com/en/enterprise-server/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#making-enterprise-runners-available-to-repositories).

`CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID`  
CodeBuild registrará los corredores autohospedados con el ID entero del grupo de corredores almacenado como valor de esta variable de entorno. De forma predeterminada este valor es 1. Para obtener más información sobre los grupos de ejecutores autoalojados, consulte [Administración del acceso a los ejecutores autohospedados mediante grupos](https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#create-configuration-for-a-just-in-time-runner-for-an-organization).

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME`  
Para configurar el registro de los ejecutores a nivel de organización mediante el archivo YAML del flujo de trabajo de GitHub Actions, puedes usar la siguiente sintaxis:  

```
name: Hello World
on: [push]
jobs:
  Hello-World-Job:
    runs-on:
      - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}
        organization-registration-name:myOrganization
    steps:
      - run: echo "Hello World!"
```

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME`  
Para configurar el registro de ejecutores de nivel empresarial mediante el archivo YAML del flujo de trabajo de GitHub Actions, puedes usar la siguiente sintaxis:  

```
name: Hello World
on: [push]
jobs:
  Hello-World-Job:
    runs-on:
      - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}
        enterprise-registration-name:myEnterprise
    steps:
      - run: echo "Hello World!"
```

`CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID`  
Para configurar el registro de los corredores con un ID de grupo de corredores específico mediante el archivo YAML del flujo de trabajo de GitHub Actions, puedes usar la siguiente sintaxis:  

```
name: Hello World
on: [push]
jobs:
  Hello-World-Job:
    runs-on:
      - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}
        registration-group-id:3
    steps:
      - run: echo "Hello World!"
```

## Filtrar los eventos del webhook de GitHub Actions ()CloudFormation
<a name="sample-github-action-runners-webhooks-cfn"></a>

La siguiente parte de una plantilla de 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 flujo de trabajo de GitHub Actions con un nombre de flujo de trabajo que coincide con la expresión `\[CI-CodeBuild\]` regular.

```
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
        Scope: GITHUB_ORGANIZATION
      FilterGroups:
        - - Type: EVENT
            Pattern: WORKFLOW_JOB_QUEUED
          - Type: WORKFLOW_NAME
            Pattern: \[CI-CodeBuild\]
```

## Filtrar GitHub acciones (webhook events)AWS CDK
<a name="sample-github-action-runners-webhooks-cdk"></a>

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)
<a name="sample-github-action-runners-webhooks-terraform"></a>

La siguiente plantilla de Terraform 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 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"
    }
  }
}
```

## Filtrar GitHub acciones y eventos de webhook ()AWS CLI
<a name="sample-github-action-runners-webhooks-cli"></a>

Los siguientes AWS CLI comandos crean un proyecto de ejecución de GitHub Actions autohospedado con un grupo de filtros de solicitudes de trabajo del flujo de trabajo de GitHub Actions que activa una compilación cuando se evalúa como verdadera.

```
aws codebuild create-project \
--name <project name> \
--source "{\"type\":\"GITHUB\",\"location\":\"<repository location>\",\"buildspec\":\"\"}" \
--artifacts {"\"type\":\"NO_ARTIFACTS\""} \
--environment "{\"type\": \"LINUX_CONTAINER\",\"image\": \"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"computeType\": \"BUILD_GENERAL1_MEDIUM\"}" \
--service-role "<service role ARN>"
```

```
aws codebuild create-webhook \
--project-name <project name> \
--filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]"
```