

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: configura un GitHub Actions CodeBuild runner ospitato
<a name="action-runner"></a>

Questo tutorial mostra come configurare i CodeBuild progetti per eseguire i job GitHub Actions. Per ulteriori informazioni sull'utilizzo di GitHub Actions, CodeBuild vedere[Tutorial: configura un GitHub Actions CodeBuild runner ospitato](#action-runner).<a name="sample-github-action-runners-prerequisites"></a>

Per completare questo tutorial, è necessario innanzitutto:
+ Connettiti con un token di accesso personale, un segreto, un'app o OAuth GitHub un'app di Secrets Manager. Se desideri connetterti con un' OAuth app, devi utilizzare la CodeBuild console per farlo. Se desideri creare un token di accesso personale, puoi utilizzare la CodeBuild console o utilizzare l'[ImportSourceCredentials API](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ImportSourceCredentials.html). Per ulteriori istruzioni, consulta [GitHub e l'accesso a GitHub Enterprise Server in CodeBuild](access-tokens-github-overview.md).
+ Connect CodeBuild al tuo GitHub account. A tale scopo, puoi effettuare una delle seguenti operazioni:
  + Puoi aggiungerlo GitHub come provider di origine nella console. Puoi connetterti con un token di accesso personale, un segreto di Secrets Manager, OAuth un'app o GitHub un'app. Per istruzioni, consulta [GitHub e l'accesso a GitHub Enterprise Server in CodeBuild](access-tokens-github-overview.md).
  + Puoi importare GitHub le tue credenziali tramite l'[ImportSourceCredentials API](https://docs.aws.amazon.com/cli/latest/reference/codebuild/import-source-credentials.html). Questo può essere fatto solo con un token di accesso personale. Se ti connetti tramite un' OAuth app, devi invece connetterti utilizzando la console. Per istruzioni, consulta [Connect GitHub con un token di accesso (CLI)](access-tokens-github.md#access-tokens-github-cli).
**Nota**  
Questa operazione deve essere eseguita solo se non ti sei connesso GitHub al tuo account.

## Fase 1: Creare un CodeBuild progetto con un webhook
<a name="sample-github-action-runners-create-project"></a>

In questo passaggio, creerai un CodeBuild progetto con un webhook e lo esaminerai nella GitHub console. Puoi anche scegliere GitHub Enterprise come fornitore di origine. Per ulteriori informazioni sulla creazione di un webhook in GitHub Enterprise, consulta[GitHub webhook manuali](github-manual-webhook.md).

**Per creare un CodeBuild progetto con un webhook**

1. Apri la AWS CodeBuild console su [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Creare un progetto di compilazione. Per informazioni, consulta [Creare un progetto di compilazione (console)](create-project.md#create-project-console) e [Esecuzione di una compilazione (console)](run-build-console.md).

1. **In **Tipo di progetto**, scegli Runner project.**

   In **Runner**:

   1. Per il **provider Runner, scegli**. **GitHub**

   1. **Per la **posizione del Runner**, scegli Repository.**

   1. **Per Repository URL in Repository, scegli **repository-name.** https://github.com/user-name/**
**Nota**  
Per impostazione predefinita, il progetto riceverà solo `WORKFLOW_JOB_QUEUED` eventi per un singolo repository. Se desideri ricevere eventi per tutti gli archivi all'interno di un'organizzazione o di un'azienda, consulta. [GitHub webhook globali e organizzativi](github-global-organization-webhook.md)

1. 
   +  In **Environment (Ambiente)**: 
     + Scegli un'**immagine Environment** supportata e **Calcola**. Tieni presente che hai la possibilità di sovrascrivere le impostazioni dell'immagine e dell'istanza utilizzando un'etichetta nel flusso di lavoro GitHub Actions (YAML). Per ulteriori informazioni, consulta [Passaggio 2: aggiorna il flusso di lavoro di GitHub Actions (YAML)](#sample-github-action-runners-update-yaml)
   +  In **Buildspec**: 
     + Nota che il tuo buildspec verrà ignorato a meno che non venga aggiunto come etichetta. `buildspec-override:true` Invece, lo CodeBuild sovrascriverà per utilizzare i comandi che configureranno il runner self-hosted.

1. Continua con i valori predefiniti, quindi scegli **Crea** progetto di compilazione.

1. Apri la GitHub console all'indirizzo `https://github.com/user-name/repository-name/settings/hooks` per verificare che un webhook sia stato creato e che sia abilitato a fornire eventi **Workflow jobs**.

## Passaggio 2: aggiorna il flusso di lavoro di GitHub Actions (YAML)
<a name="sample-github-action-runners-update-yaml"></a>

In questo passaggio, aggiornerai il file YAML del flusso di lavoro GitHub Actions [https://github.com/](https://github.com/)per configurare l'ambiente di compilazione e utilizzare i runner self-hosted di GitHub Actions in. CodeBuild Per ulteriori informazioni, consulta [Uso delle etichette con](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners) runner ospitati autonomamente e. [Le sostituzioni delle etichette sono supportate con il runner -hosted Actions CodeBuild GitHub](sample-github-action-runners-update-labels.md)

### Aggiorna il flusso di lavoro GitHub Actions (YAML).
<a name="sample-github-action-runners-update-yaml.setup"></a>

Vai [https://github.com/](https://github.com/)e aggiorna l'[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)impostazione nel tuo flusso di lavoro GitHub Actions YAML per configurare il tuo ambiente di compilazione. A tale scopo, puoi effettuare una delle seguenti operazioni:
+ Puoi specificare il nome del progetto e l'ID di esecuzione, nel qual caso la build utilizzerà la configurazione del progetto esistente per il calcolo, l'immagine, la versione dell'immagine e la dimensione dell'istanza. Il nome del progetto è necessario per collegare le impostazioni AWS relative del lavoro GitHub Actions a un progetto specifico CodeBuild. Includendo il nome del progetto in YAML, CodeBuild è consentito richiamare lavori con le impostazioni di progetto corrette. Fornendo l'ID di esecuzione, CodeBuild mapperà la build a specifiche esecuzioni del flusso di lavoro e interromperà la compilazione quando l'esecuzione del flusso di lavoro viene annullata. Per ulteriori informazioni, consulta [`github`context](https://docs.github.com/en/actions/learn-github-actions/contexts#github-context).

  ```
  runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
  ```
**Nota**  
Assicurati che *<project-name>* corrisponda al nome del progetto che hai creato nel passaggio precedente. Se non corrisponde, non CodeBuild elaborerà il webhook e il flusso di lavoro GitHub Actions potrebbe bloccarsi.

  Di seguito è riportato un esempio di flusso di lavoro GitHub Actions YAML:

  ```
  name: Hello World
  on: [push]
  jobs:
    Hello-World-Job:
      runs-on:
        - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}
      steps:
        - run: echo "Hello World!"
  ```
+ Puoi anche sovrascrivere l'immagine e il tipo di calcolo nell'etichetta. Vedi [Immagini di calcolo supportate con il runner -hosted Actions CodeBuild GitHub](sample-github-action-runners-update-yaml.images.md) per un elenco di immagini curate. Per l'utilizzo di immagini personalizzate, consulta[Le sostituzioni delle etichette sono supportate con il runner -hosted Actions CodeBuild GitHub](sample-github-action-runners-update-labels.md). Il tipo di calcolo e l'immagine nell'etichetta sovrascriveranno le impostazioni di ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di calcolo CodeBuild EC2 o Lambda, usa la seguente sintassi:

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

  Di seguito è riportato un esempio di flusso di lavoro YAML di Actions: GitHub 

  ```
  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!"
  ```
+ Puoi sovrascrivere la flotta utilizzata per la tua build nell'etichetta. Ciò sovrascriverà le impostazioni del parco veicoli configurate nel progetto per utilizzare il parco veicoli specificato. Per ulteriori informazioni, consulta [Run si basa su flotte a capacità riservata](fleets.md). Per sovrascrivere le impostazioni del tuo parco macchine per una build di calcolo Amazon EC2, usa la seguente sintassi:

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

  Per sovrascrivere sia la flotta che l'immagine utilizzate per la build, usa la seguente sintassi:

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

  Di seguito è riportato un esempio di flusso di lavoro YAML di 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!"
  ```
+ Per eseguire i lavori GitHub Actions su un'immagine personalizzata, puoi configurare un'immagine personalizzata nel tuo CodeBuild progetto ed evitare di fornire un'etichetta di sostituzione dell'immagine. CodeBuild utilizzerà l'immagine configurata nel progetto se non viene fornita alcuna etichetta di sostituzione dell'immagine.
+ Facoltativamente, puoi fornire etichette diverse da quelle supportate CodeBuild . Queste etichette verranno ignorate allo scopo di sovrascrivere gli attributi della build, ma non falliranno la richiesta del webhook. Ad esempio, l'aggiunta `testLabel` come etichetta non impedirà l'esecuzione della build.

**Nota**  
Se una dipendenza fornita da GitHub -hosted runners non è disponibile nell' CodeBuildambiente, puoi installare la dipendenza utilizzando GitHub Actions nell'esecuzione del flusso di lavoro. Ad esempio, puoi usare l'[https://github.com/actions/setup-python](https://github.com/actions/setup-python)azione per installare Python per il tuo ambiente di compilazione.

### Esegui i comandi buildspec nelle fasi INSTALL, PRE\$1BUILD e POST\$1BUILD
<a name="sample-github-action-runners-update-yaml.buildspec"></a>

Per impostazione predefinita, CodeBuild ignora qualsiasi comando buildspec durante l'esecuzione di una build Actions ospitata autonomamente. GitHub Per eseguire i comandi buildspec durante la compilazione, è `buildspec-override:true` possibile aggiungere come suffisso all'etichetta:

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

Utilizzando questo comando, CodeBuild creerà una cartella chiamata `actions-runner` nella cartella di origine principale del contenitore. Quando il runner GitHub Actions si avvia durante la `BUILD` fase, il runner verrà eseguito nella `actions-runner` directory.

Esistono diverse limitazioni quando si utilizza un override buildspec in una build di Actions ospitata autonomamente: GitHub 
+ CodeBuild non eseguirà i comandi buildspec durante la `BUILD` fase, poiché il runner ospitato autonomamente viene eseguito durante la fase. `BUILD`
+ CodeBuild non scaricherà alcuna fonte primaria o secondaria durante la fase. `DOWNLOAD_SOURCE` Se hai configurato un file buildspec, solo quel file verrà scaricato dalla fonte principale del progetto.
+ Se un comando build fallisce nella `INSTALL` fase `PRE_BUILD` or, non CodeBuild avvierà il runner self-hosted e il processo di workflow GitHub Actions dovrà essere annullato manualmente.
+ CodeBuild recupera il token runner durante la `DOWNLOAD_SOURCE` fase, che ha una scadenza di un'ora. Se le tue `INSTALL` fasi `PRE_BUILD` o superano un'ora, il runner token potrebbe scadere prima dell'inizio del runner ospitato autonomamente. GitHub 

## Passaggio 3: rivedi i risultati
<a name="sample-github-action-runners-verify"></a>

Ogni volta che viene eseguito un flusso di lavoro GitHub Actions, riceve CodeBuild gli eventi del processo del flusso di lavoro tramite il webhook. Per ogni job del workflow, CodeBuild avvia una build per eseguire un Actions runner temporaneo. GitHub Il runner è responsabile dell'esecuzione di un singolo processo di workflow. Una volta completato il processo, il runner e il processo di compilazione associato verranno immediatamente interrotti.

Per visualizzare i registri dei lavori del flusso di lavoro, accedi al tuo repository in GitHub, scegli **Azioni**, scegli il flusso di lavoro desiderato, quindi scegli il **Job** specifico per il quale desideri esaminare i log.

Puoi rivedere le etichette richieste nel registro mentre il lavoro è in attesa di essere ritirato da un runner che si occupa di hosting autonomo. CodeBuild

![\[Caricamento del registro del lavoro.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/hello-world-loading.png)


Una volta completato il lavoro, potrai visualizzarne il registro.

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


## GitHub Opzioni di configurazione di Actions Runner
<a name="sample-github-action-runners-config"></a>

È possibile specificare le seguenti variabili di ambiente nella configurazione del progetto per modificare la configurazione di installazione dei corridori ospitati autonomamente.

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME`  
CodeBuild registrerà i corridori ospitati autonomamente con il nome dell'organizzazione specificato come valore di questa variabile di ambiente. Per ulteriori informazioni sulla registrazione dei corridori a livello di organizzazione e sulle autorizzazioni necessarie, consulta [Creare una configurazione per un corridore per un' just-in-time](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)organizzazione.

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME`  
CodeBuild registrerà i corridori ospitati autonomamente con il nome aziendale specificato come valore di questa variabile di ambiente. Per ulteriori informazioni sulla registrazione dei runner a livello aziendale e sulle autorizzazioni necessarie, consulta [Create configuration for a runner for an](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) Enterprise. just-in-time  
Per impostazione predefinita, gli Enterprise runner non sono disponibili negli archivi delle organizzazioni. Affinché i runner ospitati autonomamente possano iniziare a lavorare nel flusso di lavoro, potrebbe essere necessario configurare le impostazioni di accesso del gruppo di runner. Per ulteriori informazioni, consulta [Rendere disponibili i runner aziendali](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) nei repository.

`CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID`  
CodeBuild registrerà i corridori ospitati autonomamente nell'ID intero del gruppo runner memorizzato come valore di questa variabile di ambiente. Per impostazione predefinita, questo valore è 1. Per ulteriori informazioni sui gruppi di corridori ospitati autonomamente, consulta [Gestione dell'accesso ai corridori ospitati autonomamente](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) tramite gruppi.

`CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME`  
Per configurare la registrazione dei corridori a livello di organizzazione utilizzando il file YAML del flusso di lavoro GitHub Actions, puoi utilizzare la seguente sintassi:  

```
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`  
Per configurare la registrazione dei runner di livello aziendale utilizzando il file YAML del flusso di lavoro GitHub Actions, è possibile utilizzare la seguente sintassi:  

```
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`  
Per configurare la registrazione dei corridori a uno specifico ID di gruppo di corridori utilizzando il file YAML del flusso di lavoro GitHub Actions, puoi utilizzare la seguente sintassi:  

```
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!"
```

## Filter Actions webhook events () GitHub CloudFormation
<a name="sample-github-action-runners-webhooks-cfn"></a>

La seguente parte di un CloudFormation modello in formato YAML crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro GitHub Actions con un nome di flusso di lavoro corrispondente all'espressione regolare. `\[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
        Scope: GITHUB_ORGANIZATION
      FilterGroups:
        - - Type: EVENT
            Pattern: WORKFLOW_JOB_QUEUED
          - Type: WORKFLOW_NAME
            Pattern: \[CI-CodeBuild\]
```

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

Il AWS CDK modello seguente crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro 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)],
    })
```

## Eventi webhook di Filter GitHub Actions (Terraform)
<a name="sample-github-action-runners-webhooks-terraform"></a>

Il seguente modello Terraform crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro 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"
    }
  }
}
```

## Filter GitHub Actions webhook events ()AWS CLI
<a name="sample-github-action-runners-webhooks-cli"></a>

 AWS CLI I comandi seguenti creano un progetto GitHub Actions runner ospitato autonomamente con un gruppo di filtri per le richieste di lavoro del flusso di lavoro di GitHub Actions che attiva una build quando restituisce true.

```
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\"}]]"
```