

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

# Usa esempi basati su casi per CodeBuild
<a name="use-case-based-samples"></a>

È possibile utilizzare questi esempi basati su casi d'uso per sperimentare: AWS CodeBuild

[Esempi interservizi](cross-service-samples.md)  
Un elenco di esempi interservizi con cui sperimentare. AWS CodeBuild

[Creazione di esempi di badge](sample-build-badges.md)  
Mostra come configurare i badge CodeBuild di costruzione.

[Esempio di rapporto di prova](sample-test-report-cli.md)  
Utilizza il AWS CLI per creare, eseguire e visualizzare i risultati di un rapporto di test.

[Esempi Docker per CodeBuild](sample-docker-section.md)  
Mostra come utilizzare immagini Docker personalizzate, pubblicare immagini Docker in un repository in Amazon ECR e utilizzare immagini Docker in un registro privato.

[Output di compilazione ospitato in un bucket S3 ](sample-disable-artifact-encryption.md)  
Illustra come creare un sito Web statico in un bucket S3 utilizzando artefatti della compilazione non crittografati.

[ Esempio di ingressi e uscite multipli ](sample-multi-in-out.md)  
Mostra come utilizzare diverse origini di input e numerosi artefatti di output in un progetto di compilazione.

[ Esempi di esecuzione di test paralleli ](sample-parallel-test.md)  
Mostra come utilizzare il comando `codebuild-tests-run` CLI per dividere ed eseguire test in ambienti di esecuzione parallela.

[ Versioni runtime nel file buildspec di esempio ](sample-runtime-versions.md)  
Mostra come specificare i runtime e le relative versioni nel file buildspec.

[Esempio di versione di origine](sample-source-version.md)  
Mostra come utilizzare una versione specifica del codice sorgente in un progetto di CodeBuild compilazione.

[Esempi di repository di sorgenti di terze parti per CodeBuild](sample-third-party-source.md)  
Mostra come creare BitBucket, GitHub Enterprise Server ed GitHub estrarre richieste con webhook utilizzando. CodeBuild

[Imposta i nomi degli artefatti in fase di compilazione utilizzando il controllo delle versioni semantiche](sample-buildspec-artifact-naming.md)  
Mostra come usare il versioning semantico per generare un nome di artefatto in fase di creazione.

# Esempi trasversali per CodeBuild
<a name="cross-service-samples"></a>

È possibile utilizzare questi esempi interservizi per sperimentare con: AWS CodeBuild

[Esempio di Amazon ECR](sample-ecr.md)  
Utilizza un'immagine Docker in un repository Amazon ECR per utilizzare Apache Maven per produrre un singolo file JAR. Le istruzioni di esempio ti mostreranno come creare e inviare un'immagine Docker ad Amazon ECR, creare un progetto Go, creare il progetto, eseguire il progetto e configurare le autorizzazioni per consentire la connessione CodeBuild ad Amazon ECR.

[Esempio di Amazon EFS](sample-efs.md)  
Mostra come configurare un file buildspec in modo che un CodeBuild progetto venga montato e costruito su un file system Amazon EFS. Le istruzioni di esempio ti mostreranno come creare un Amazon VPC, creare un file system in Amazon VPC, creare e creare un progetto che utilizza Amazon VPC e quindi rivedere il file di progetto e le variabili generati. 

[AWS CodePipeline campioni](sample-codepipeline.md)  
Mostra come utilizzare per AWS CodePipeline creare una build con build in batch, più fonti di input e più artefatti di output. In questa sezione sono inclusi file JSON di esempio che mostrano strutture di pipeline che creano build in batch con artefatti separati e artefatti combinati. Viene fornito un esempio JSON aggiuntivo che mostra la struttura della pipeline con più sorgenti di input e più artefatti di output.

[AWS Config campione](how-to-integrate-config.md)  
Mostra come eseguire la configurazione. AWS Config Elenca CodeBuild le risorse monitorate e descrive come cercare i CodeBuild progetti. AWS Config Le istruzioni di esempio mostreranno i prerequisiti per l'integrazione AWS Config, i passaggi per la configurazione AWS Config e i passaggi in cui cercare CodeBuild progetti e dati. AWS Config

[Esempio di notifiche di compilazione](sample-build-notifications.md)  
Utilizza Apache Maven per produrre un singolo file JAR. Invia una notifica di build agli abbonati di un argomento di Amazon SNS. Le istruzioni di esempio mostrano come configurare le autorizzazioni in modo da CodeBuild poter comunicare con Amazon SNS CloudWatch e come creare e CodeBuild identificare argomenti in Amazon SNS, come iscrivere i destinatari all'argomento e come impostare le regole in. CloudWatch

# Esempio di Amazon ECR per CodeBuild
<a name="sample-ecr"></a>

Questo esempio utilizza un'immagine Docker in un repository di immagini Amazon Elastic Container Registry (Amazon ECR) per creare un progetto Go di esempio.

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono possibili addebiti per AWS CodeBuild e per AWS risorse e azioni relative ad Amazon S3 AWS KMS, CloudWatch Logs e Amazon ECR. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i prezzi](https://aws.amazon.com/codebuild/pricing) di [Amazon S3, i prezzi, i AWS Key Management Service](https://aws.amazon.com/s3/pricing) [prezzi](https://aws.amazon.com/kms/pricing) di [Amazon e CloudWatch i prezzi](https://aws.amazon.com/cloudwatch/pricing) di [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [

## Esegui l'esempio di Amazon ECR
](#sample-ecr-running)

## Esegui l'esempio di Amazon ECR
<a name="sample-ecr-running"></a>

Utilizza le seguenti istruzioni per eseguire l'esempio di Amazon ECR per CodeBuild.

**Per eseguire questo esempio**

1. Per creare e inviare l'immagine Docker al tuo repository di immagini in Amazon ECR, completa i passaggi nella [Esegui l'esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md#sample-docker-running) sezione del. [Esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md)

1. Creazione di un progetto Go: 

   1. Crea i file come descritto nelle [File di un progetto Go](#sample-ecr-go-project-files) sezioni [Struttura di un progetto Go](#ecr-sample-go-project-file-structure) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit, GitHub o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

   1. Crea un progetto di compilazione, esegui la build e visualizza le relative informazioni sulla build.

      Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

      ```
      {
        "name": "sample-go-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
        },
        "artifacts": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-output-bucket",
          "packaging": "ZIP",
          "name": "GoOutputArtifact.zip"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/standard:5.0",
          "computeType": "BUILD_GENERAL1_SMALL"
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name",
        "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
      }
      ```

   1. Per ottenere l'artefatto di output della compilazione, aprire il bucket di output S3.

   1. Scaricare il file `GoOutputArtifact.zip` sul computer locale o sull'istanza, quindi estrarre il contenuto del file. Tra i contenuti estratti, selezionare il file `hello`. 

1.  Se una delle seguenti condizioni è vera, devi aggiungere le autorizzazioni al tuo repository di immagini in Amazon ECR in modo che AWS CodeBuild possa inserire la sua immagine Docker nell'ambiente di compilazione. 
   +  Il tuo progetto utilizza CodeBuild le credenziali per estrarre immagini Amazon ECR. Questo è indicato dal valore `CODEBUILD` nell'attributo `imagePullCredentialsType` di `ProjectEnvironment`. 
   +  Il tuo progetto utilizza un'immagine Amazon ECR per più account. In questo caso, il progetto deve utilizzare il suo ruolo di servizio per estrarre immagini Amazon ECR. Per abilitare questo comportamento, impostare l'attributo `imagePullCredentialsType` di `ProjectEnvironment` su `SERVICE_ROLE`. 

   1. Apri la console Amazon ECR all'indirizzo [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Nella lista dei nomi dei repository, selezionare il nome del repository creato o selezionato.

   1. Dal riquadro di navigazione scegliere **Permissions (Autorizzazioni)**, **Edit (Modifica)**, quindi scegliere **Add statement (Aggiungi istruzione)**.

   1. In **Nome istruzione**, immettere un identificatore (ad esempio, **CodeBuildAccess**).

   1. Per **Effect (Effetto)**, lasciare selezionato **Allow (Abilita)**. Questo indica che vuoi consentire l'accesso a un altro account AWS .

   1. Per **Principal (Principale)**, eseguire una delle seguenti operazioni:
      + Se il tuo progetto utilizza CodeBuild le credenziali per estrarre un'immagine Amazon ECR, in **Service principal, inserisci**. **codebuild.amazonaws.com** 
      + Se il tuo progetto utilizza un'immagine Amazon ECR per più account, per **AWS account IDs** inserisci IDs gli AWS account a cui desideri consentire l'accesso.

   1. Saltare la lista **All IAM entities (Tutte le entità IAM)**.

   1. **Per **Azione**, seleziona le azioni di sola estrazione: ecr:GetDownloadUrlForLayer, **ecr:** ed **ecr**:. BatchGetImage BatchCheckLayerAvailability**

   1. Per **Condizioni**, aggiungi quanto segue:

      ```
      {
         "StringEquals":{
            "aws:SourceAccount":"<AWS-account-ID>",
            "aws:SourceArn":"arn:aws:codebuild:<region>:<AWS-account-ID>:project/<project-name>"
         }
      }
      ```

   1. Scegli **Save** (Salva).

      Questa policy viene visualizzata in **Autorizzazioni**. L'entità principal è ciò che è stato immesso per **Principal (Entità principal)** al passaggio 3 di questa procedura:
      + Se il tuo progetto utilizza CodeBuild credenziali per estrarre un'immagine Amazon ECR, `"codebuild.amazonaws.com"` viene visualizzato in **Service** principals.
      + **Se il tuo progetto utilizza un'immagine Amazon ECR per più account, l'ID dell' AWS account a cui desideri consentire l'accesso viene visualizzato in AWS Account. IDs**

        La seguente policy di esempio utilizza sia CodeBuild le credenziali che un'immagine Amazon ECR per più account.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject",
                          "aws:SourceAccount": "111122223333"
                      }
                  }
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
      + Se i tuoi progetti utilizzano CodeBuild credenziali e desideri che abbiano accesso aperto all'archivio Amazon ECR, puoi omettere `Condition` le chiavi e aggiungere la seguente politica di esempio. CodeBuild 

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              }
          ]
      }
      ```

------

1. Crea un progetto di compilazione, esegui la build e visualizza le informazioni sulla build.

   Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "amazon-ecr-sample-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket",
       "packaging": "ZIP",
       "name": "GoOutputArtifact.zip"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "account-ID.dkr.ecr.region-ID.amazonaws.com/your-Amazon-ECR-repo-name:tag",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Per ottenere l'artefatto di output della compilazione, aprire il bucket di output S3.

1. Scaricare il file `GoOutputArtifact.zip` sul computer locale o sull'istanza, quindi estratte il contenuto del file `GoOutputArtifact.zip`. Tra i contenuti estratti, selezionare il file `hello`.

### Struttura di un progetto Go
<a name="ecr-sample-go-project-file-structure"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── hello.go
```

### File di un progetto Go
<a name="sample-ecr-go-project-files"></a>

Questo esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  install: 
   runtime-versions: 
     golang: 1.13 
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Go code
      - go build hello.go 
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - hello
```

`hello.go` (in `(root directory name)`)

```
package main
import "fmt"

func main() {
  fmt.Println("hello world")
  fmt.Println("1+1 =", 1+1)
  fmt.Println("7.0/3.0 =", 7.0/3.0)
  fmt.Println(true && false)
  fmt.Println(true || false)
  fmt.Println(!true)
}
```

# Esempio di Amazon Elastic File System per AWS CodeBuild
<a name="sample-efs"></a>

 Potresti voler creare le tue AWS CodeBuild build su Amazon Elastic File System, un servizio di file scalabile e condiviso per istanze Amazon EC2. La capacità di storage di Amazon EFS è elastica, quindi aumenta o si riduce man mano che i file vengono aggiunti e rimossi. Ha una semplice interfaccia di servizi Web che ti permette di creare e configurare i file system. Gestisce anche tutta l'infrastruttura di storage dei file, quindi non devi preoccuparti di distribuire, applicare patch o mantenere le configurazioni dei file system. Per ulteriori informazioni, consulta [Cos'è Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) nella *Amazon Elastic File System User Guide*. 

 Questo esempio mostra come configurare un CodeBuild progetto in modo che monti e poi crei un'applicazione Java su un file system Amazon EFS. Prima di iniziare, è necessario disporre di un'applicazione Java pronta per la creazione che venga caricata in un bucket di input S3 o in un AWS CodeCommit repository GitHub Enterprise Server o Bitbucket. GitHub 

I dati in transito per il file system sono crittografati. Per crittografare i dati in transito utilizzando un'immagine diversa, consulta [Crittografia dei dati in transito](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html). 

**Topics**
+ [

## Utilizzo AWS CodeBuild con Amazon Elastic File System
](#sample-efs-high-level-steps)
+ [

# Risolvi i problemi di integrazione con Amazon EFS
](sample-efs-troubleshooting.md)

## Utilizzo AWS CodeBuild con Amazon Elastic File System
<a name="sample-efs-high-level-steps"></a>

L'esempio copre i quattro passaggi di alto livello necessari per utilizzare Amazon EFS con AWS CodeBuild. Questi sono: 

1. Crea un cloud privato virtuale (VPC) nel tuo AWS account. 

1. Creare un file system che utilizza questo VPC. 

1. Crea e costruisci un CodeBuild progetto che utilizza il VPC. Il CodeBuild progetto utilizza quanto segue per identificare il file system:
   +  Un identificatore univoco del file system. Si sceglie l'identificatore quando si specifica il file system nel progetto di compilazione.
   + L'ID del file system. L'ID viene visualizzato quando visualizzi il file system nella console Amazon EFS.
   +  Un punto di montaggio. Questa è una directory nel contenitore Docker che monta il file system. 
   + Opzioni di montaggio. Includono dettagli su come montare il file system.

1. Esamina il progetto di compilazione per assicurarti che siano stati generati i file e le variabili di progetto corretti.

**Nota**  
 Un file system creato in Amazon EFS è supportato solo su piattaforme Linux. 

 

**Topics**
+ [

### Fase 1: Creare un VPC utilizzando CloudFormation
](#sample-efs-create-vpc)
+ [

### Fase 2: crea un file system Amazon Elastic File System con il tuo VPC
](#sample-efs-create-efs)
+ [

### Fase 3: creare un CodeBuild progetto da utilizzare con Amazon EFS
](#sample-efs-create-acb)
+ [

### Passaggio 4: rivedi il progetto di compilazione
](#sample-efs-summary)

### Fase 1: Creare un VPC utilizzando CloudFormation
<a name="sample-efs-create-vpc"></a>

 Crea il tuo VPC con un CloudFormation modello. 

1.  Segui le istruzioni [CloudFormation Modello VPC](cloudformation-vpc-template.md) per l'uso CloudFormation per creare un VPC. 
**Nota**  
 Il VPC creato da questo CloudFormation modello ha due sottoreti private e due sottoreti pubbliche. È necessario utilizzare solo sottoreti private quando si utilizza AWS CodeBuild per montare il file system creato in Amazon EFS. Se si utilizza una delle sottoreti pubblici, la build ha esito negativo. 

1. Accedi Console di gestione AWS e apri la console Amazon VPC all'indirizzo. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1.  Scegli il VPC con cui hai creato. CloudFormation

1. Prendere nota del nome del VPC e dell'ID presenti nella scheda **Description (Descrizione)**. Questo ID sarà necessario al momento della creazione del progetto AWS CodeBuild più avanti in questo esempio. 

### Fase 2: crea un file system Amazon Elastic File System con il tuo VPC
<a name="sample-efs-create-efs"></a>

 Crea un semplice file system Amazon EFS per questo esempio utilizzando il VPC creato in precedenza. 

1. Accedi Console di gestione AWS e apri la console Amazon EFS all'indirizzo [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Scegliere **Create file system (Crea file system)**. 

1.  In **VPC** scegliere il nome VPC annotato in precedenza in questo esempio. 

1.  Lasciare le zone di disponibilità associate alle sottoreti selezionate. 

1.  Selezionare **Next Step (Fase successiva)**. 

1.  In **Aggiungi tag**, per la chiave **Name** predefinita, in **Value**, inserisci il nome del tuo file system Amazon EFS. 

1.  Mantenere **Bursting** e **General Purpose (Utilizzo generico)** selezionati come performance predefinita e modalità di throughput, quindi scegliere **Next Step (Fase successiva)**. 

1. Per **Configure client access (Configura accesso client)**, scegliere **Next Step (Passaggio successivo)**.

1.  Scegliere **Create File System (Crea file system)**. 

1.  (Facoltativo) Ti consigliamo di aggiungere una policy al tuo file system Amazon EFS che applichi la crittografia dei dati in transito. **Nella console Amazon EFS, scegli **Politica del file system**, scegli **Modifica**, seleziona la casella Applica la **crittografia in transito per tutti i client**, quindi scegli Salva.**

### Fase 3: creare un CodeBuild progetto da utilizzare con Amazon EFS
<a name="sample-efs-create-acb"></a>

 Crea un AWS CodeBuild progetto che utilizzi il VPC creato in precedenza in questo esempio. Quando la build viene eseguita, monta il file system Amazon EFS creato in precedenza. Successivamente, memorizza il file.jar creato dall'applicazione Java nella directory del punto di montaggio del file system.

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

1.  Nel riquadro di navigazione scegliere **Build projects (Progetti di compilazione)**, quindi **Create build project (Crea progetto di compilazione)**. 

1.  In **Project name (Nome progetto)** immettere un nome per il progetto. 

1.  In **Source provider (Provider di origine)** scegliere il repository contenente l'applicazione Java che si desidera compilare. 

1.  Inserisci le informazioni, come l'URL del repository, da utilizzare per localizzare l' CodeBuild applicazione. Le opzioni variano a seconda del provider di origine. Per ulteriori informazioni, consulta [Choose source provider](create-project.md#create-project-source-provider). 

1.  In **Environment image (Immagine ambiente)** scegliere **Managed image (Immagine gestita)**. 

1.  In **Operating system (Sistema operativo)**, scegliere **Amazon Linux 2**. 

1. In **Runtime(s) (Runtime)**, seleziona **Standard**. 

1.  Da **Image**, scegliete **aws/codebuild/amazonlinux-x86\$164-standard:4.0**. 

1.  Da **Environment type (Tipo ambiente)**, seleziona **Linux**. 

1.  In **Service role (Ruolo del servizio)** scegliere **New service role (Nuovo ruolo del servizio)**. In **Nome ruolo, inserisci un nome** per il ruolo creato per te. CodeBuild 

1. Espandere **Additional configuration (Configurazione aggiuntiva)**.

1.  Seleziona **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Abilita questo flag se desideri creare immagini Docker o se desideri che le build ottengano privilegi elevati)**.
**Nota**  
Per impostazione predefinita, il daemon Docker è abilitato per le build non VPC. Se desideri utilizzare i contenitori Docker per le build VPC, [consulta Runtime Privilege e Linux Capabilities sul sito Web di Docker Docs e](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) abilita la modalità privilegiata. Inoltre, Windows non supporta la modalità privilegiata.

1.  In **VPC** scegliere l'ID VPC. 

1.  In **Subnets (Sottoreti)** scegliere una o più sottoreti private associate al VPC. È necessario utilizzare sottoreti private in una build che monta un file system Amazon EFS. Se si utilizza una sottorete pubblica, la build ha esito negativo. 

1.  Da **Security Group (Gruppo di sicurezza)**, scegliere il gruppo di sicurezza predefinito.

1.  In **File Systems (File system)**, immettere le seguenti informazioni:
   + Per **Identifier**, immettere un identificatore univoco del file system. Deve contenere meno di 129 caratteri e solo caratteri alfanumerici e caratteri di sottolineatura. CodeBuild utilizza questo identificatore per creare una variabile di ambiente che identifichi il file system elastico. Il formato della variabile di ambiente è `CODEBUILD_<file_system_identifier>` in lettere maiuscole. Ad esempio, se si immette `my_efs`, la variabile di ambiente è `CODEBUILD_MY_EFS`. 
   + Per **ID**, scegliere l'ID del file system. 
   + (Facoltativo) Inserisci una directory nel file system. CodeBuild monta questa directory. Se si lascia vuoto il **percorso della directory**, CodeBuild monta l'intero file system. Il percorso del file è relativo rispetto alla root del file system. 
   + Per **Mount point**, inserisci il percorso assoluto della directory nel contenitore di build in cui è montato il file system. Se questa directory non esiste, la CodeBuild crea durante la compilazione. 
   + (Facoltativo) Immettere le opzioni di montaggio. Se lasci vuote **le opzioni di montaggio**, CodeBuild utilizza le opzioni di montaggio predefinite:

     ```
     nfsvers=4.1
     rsize=1048576
     wsize=1048576
     hard
     timeo=600
     retrans=2
     ```

     Per ulteriori informazioni, consulta le [opzioni di montaggio NFS consigliate](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) nella *Amazon Elastic File System User Guide*. 

1.  Per **Build specification (Specifiche di compilazione)** scegliere **Insert build commands (Inserisci comandi di compilazione)** e selezionare **Switch to editor (Passa a editor)**. 

1.  Inserisci i seguenti comandi build spec nell'editor. Sostituire `<file_system_identifier>` con l'identificatore inserito nel passaggio 17. Utilizzare lettere maiuscole (ad esempio, `CODEBUILD_MY_EFS`).

   ```
   version: 0.2
   phases:
     install:
       runtime-versions:
         java: corretto11    
     build:
       commands:
         - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
   ```

1.  Utilizzare i valori di default per tutte le altre impostazioni, quindi scegliere **Create build project (Crea progetto di compilazione)**. Al termine della compilazione viene visualizzata la pagina della console per il progetto. 

1.  Selezionare **Start build (Avvia compilazione)**. 

### Passaggio 4: rivedi il progetto di compilazione
<a name="sample-efs-summary"></a>



 Dopo aver creato il AWS CodeBuild progetto: 
+  Hai un file.jar creato dalla tua applicazione Java che è integrato nel tuo file system Amazon EFS nella tua directory dei punti di montaggio. 
+  Una variabile di ambiente che identifichi il file system viene creata utilizzando l'identificatore del file system immesso al momento della creazione del progetto. 

 Per ulteriori informazioni, consulta [Mounting file system](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) nella *Amazon Elastic File System User Guide*. 

# Risolvi i problemi di integrazione con Amazon EFS
<a name="sample-efs-troubleshooting"></a>

Di seguito sono riportati gli errori che potresti riscontrare durante la configurazione di Amazon EFS con CodeBuild.

**Topics**
+ [

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Autorizzazione negata
](#sample-efs-troubleshooting.permission-denied)
+ [

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Reimpostazione della connessione da parte di un peer
](#sample-efs-troubleshooting.connection-reset)
+ [

## VPC\$1CLIENT\$1ERROR: errore EC2 imprevisto: UnauthorizedOperation
](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Autorizzazione negata
<a name="sample-efs-troubleshooting.permission-denied"></a>

L'autorizzazione IAM non è supportata per il montaggio di Amazon EFS con CodeBuild. Se utilizzi una policy del file system Amazon EFS personalizzata, dovrai concedere l'accesso in lettura e scrittura a tutti i principali IAM. Esempio:

```
"Principal": {
  "AWS": "*"
}
```

## CLIENT\$1ERROR: montaggio di '127.0.0.1: /' non riuscito. Reimpostazione della connessione da parte di un peer
<a name="sample-efs-troubleshooting.connection-reset"></a>

Esistono due possibili cause di questo errore:
+ La sottorete CodeBuild VPC si trova in una zona di disponibilità diversa rispetto alla destinazione di montaggio di Amazon EFS. Puoi risolvere questo problema aggiungendo una sottorete VPC nella stessa zona di disponibilità del target di montaggio Amazon EFS.
+ Il gruppo di sicurezza non dispone delle autorizzazioni per comunicare con Amazon EFS. Puoi risolvere questo problema aggiungendo una regola in entrata per consentire tutto il traffico proveniente dal VPC (aggiungi il blocco CIDR primario per il tuo VPC) o dal gruppo di sicurezza stesso.

## VPC\$1CLIENT\$1ERROR: errore EC2 imprevisto: UnauthorizedOperation
<a name="sample-efs-troubleshooting.unauthorized-operation"></a>

Questo errore si verifica quando tutte le sottoreti nella configurazione VPC per il CodeBuild progetto sono sottoreti pubbliche. È necessario disporre di almeno una sottorete privata nel VPC per garantire la connettività di rete. 

# AWS CodePipeline campioni per CodeBuild
<a name="sample-codepipeline"></a>

Questa sezione descrive esempi di integrazioni tra CodePipeline e CodeBuild.


| Project N.E.M.O. | Description | 
| --- | --- | 
|  [Esempi di CodePipeline/CodeBuild integrazioni e build in batch](#sample-pipeline-batch)  |  Questi esempi mostrano come utilizzare per AWS CodePipeline creare un progetto di compilazione che utilizza build in batch.  | 
|  [Esempio di CodePipeline/CodeBuild integrazione con più sorgenti di input e artefatti di output](#sample-pipeline-multi-input-output)  |  Questo esempio dimostra come utilizzarlo per AWS CodePipeline creare un progetto di compilazione che utilizza più fonti di input per creare più artefatti di output.  | 

## Esempi di CodePipeline/CodeBuild integrazioni e build in batch
<a name="sample-pipeline-batch"></a>

AWS CodeBuild supporta le build in batch. Gli esempi seguenti mostrano come utilizzare per AWS CodePipeline creare un progetto di compilazione che utilizza build in batch.

È possibile utilizzare un file in formato JSON che definisce la struttura della pipeline e quindi utilizzarlo con il per creare la pipeline. AWS CLI *Per ulteriori informazioni, consulta il riferimento alla struttura della [AWS CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) nella Guida per l'utente.AWS CodePipeline *

### Creazione in batch con singoli artefatti
<a name="sample-pipeline-batch.separate-artifacts"></a>

Utilizza il seguente file JSON come esempio di struttura di pipeline che crea una build in batch con artefatti separati. Per abilitare la compilazione in batch CodePipeline, impostate il `BatchEnabled` parametro dell'oggetto su. `configuration` `true`

```
{
  "pipeline": {
    "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
    "stages": [
      {
        "name": "Source",
        "actions": [
          {
            "inputArtifacts": [],
            "name": "Source1",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source1"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-input-bucket-name>",
              "S3ObjectKey": "my-source-code-file-name.zip"
            },
            "runOrder": 1
          },
          {
            "inputArtifacts": [],
            "name": "Source2",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source2"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-other-input-bucket-name>",
              "S3ObjectKey": "my-other-source-code-file-name.zip"
            },
            "runOrder": 1
          }
        ]
      },
      {
        "name": "Build",
        "actions": [
          {
            "inputArtifacts": [
              {
                "name": "source1"
              },
              {
                "name": "source2"
              }
            ],
            "name": "Build",
            "actionTypeId": {
              "category": "Build",
              "owner": "AWS",
              "version": "1",
              "provider": "CodeBuild"
            },
            "outputArtifacts": [
              {
                "name": "build1"
              },
              {
                "name": "build1_artifact1"
              },
              {
                "name": "build1_artifact2"
              },
              {
                "name": "build2_artifact1"
              },
              {
                "name": "build2_artifact2"
              }
            ],
            "configuration": {
              "ProjectName": "my-build-project-name",
              "PrimarySource": "source1",
              "BatchEnabled": "true"
            },
            "runOrder": 1
          }
        ]
      }
    ],
    "artifactStore": {
      "type": "S3",
      "location": "<AWS-CodePipeline-internal-bucket-name>"
    },
    "name": "my-pipeline-name",
    "version": 1
  }
}
```

Di seguito è riportato un esempio di file CodeBuild buildspec che funzionerà con questa configurazione della pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
  secondary-artifacts:
    artifact1:
      files:
        - output_file
    artifact2:
      files:
        - output_file
```

I nomi degli artefatti di output specificati nel file JSON della pipeline devono corrispondere all'identificatore delle build e degli artefatti definiti nel file buildspec. La sintassi è per gli artefatti primari e \$1 per gli artefatti *buildIdentifier* secondari. *buildIdentifier* *artifactIdentifier*

Ad esempio, per il nome dell'artefatto di output`build1`, CodeBuild caricherà l'artefatto principale nella posizione di. `build1` `build1` Per il nome di output`build1_artifact1`, CodeBuild caricherà l'artefatto secondario di nella posizione `artifact1` `build1` di, e così via. `build1_artifact1` Se viene specificata una sola posizione di output, il nome deve essere *buildIdentifier* solo.

Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passate il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

### Creazione in batch con artefatti combinati
<a name="sample-pipeline-batch.combined-artifacts"></a>

Utilizzate il seguente file JSON come esempio di struttura di pipeline che crea una build in batch con artefatti combinati. Per abilitare la compilazione in batch CodePipeline, impostate il `BatchEnabled` parametro dell'oggetto su. `configuration` `true` Per combinare gli elementi di costruzione nella stessa posizione, impostate il `CombineArtifacts` parametro dell'`configuration`oggetto su. `true`

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-input-bucket-name>",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-other-input-bucket-name>",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "output1 "
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1",
             "BatchEnabled": "true",
             "CombineArtifacts": "true"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "<AWS-CodePipeline-internal-bucket-name>"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

Di seguito è riportato un esempio di file CodeBuild buildspec che funzionerà con questa configurazione della pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
```

Se gli artefatti combinati sono abilitati per la compilazione in batch, è consentito un solo output. CodeBuild combinerà gli artefatti principali di tutte le build in un unico file ZIP.

Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passare il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

## Esempio di CodePipeline/CodeBuild integrazione con più sorgenti di input e artefatti di output
<a name="sample-pipeline-multi-input-output"></a>

Un AWS CodeBuild progetto può richiedere più di una fonte di input. Può anche creare più di un artefatto di output. Questo esempio dimostra come utilizzarlo per AWS CodePipeline creare un progetto di compilazione che utilizzi più fonti di input per creare più artefatti di output. Per ulteriori informazioni, consulta [Diverse origini di input ed esempi di artefatti di output](sample-multi-in-out.md).

È possibile utilizzare un file in formato JSON che definisce la struttura della pipeline e quindi utilizzarlo con il per creare la pipeline. AWS CLI Utilizzare il seguente file JSON come esempio di una struttura di pipeline che crea una compilazione con più di un'origine di input e più di un artefatto di output. Più avanti in questo esempio viene illustrato come questo file specifica i numerosi input e output. *Per ulteriori informazioni, consulta il riferimento alla struttura della [CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) nella Guida per l'utente.AWS CodePipeline *

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "my-input-bucket-name",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "my-other-input-bucket-name",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "AWS CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "artifact1"
            },
            {
              "name": "artifact2"
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "AWS-CodePipeline-internal-bucket-name"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

 In questo file JSON: 
+ Una delle origini di input deve essere un percorso `PrimarySource`. Questa fonte è la directory in cui CodeBuild cerca ed esegue il file buildspec. La parola chiave `PrimarySource` viene utilizzata per specificare la fonte primaria nella `configuration` sezione dello CodeBuild stage del file JSON. 
+ Ogni origine di input è installata nella propria directory. Questa directory viene archiviata nella variabile di ambiente integrata `$CODEBUILD_SRC_DIR` per l'origine principale e in`$CODEBUILD_SRC_DIR_yourInputArtifactName` per tutte le altre origini. Per la pipeline di questo esempio, le due directory delle origini di input sono `$CODEBUILD_SRC_DIR` e `$CODEBUILD_SRC_DIR_source2`. Per ulteriori informazioni, consulta [Variabili di ambiente degli ambienti di compilazione](build-env-ref-env-vars.md). 
+ I nomi degli artefatti di output specificati nel file JSON della pipeline devono corrispondere ai nomi degli artefatti secondari definiti nel file buildspec. Questa pipeline utilizza il seguente file buildspec. Per ulteriori informazioni, consulta [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax). 

  ```
  version: 0.2
  
  phases:
    build:
      commands:
        - touch source1_file
        - cd $CODEBUILD_SRC_DIR_source2
        - touch source2_file
  
  artifacts:
    files:
      - '**/*'
    secondary-artifacts:
      artifact1:
        base-directory: $CODEBUILD_SRC_DIR
        files:
          - source1_file
      artifact2:
        base-directory: $CODEBUILD_SRC_DIR_source2
        files:
          - source2_file
  ```

 Dopo aver creato il file JSON, puoi creare la tua pipeline. Utilizzate il AWS CLI per eseguire il comando **create-pipeline** e passate il file al parametro. `--cli-input-json` Per ulteriori informazioni, consulta [Create a pipeline (CLI](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli)) nella Guida per *AWS CodePipeline l'*utente. 

# AWS Config campionare con CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config fornisce un inventario delle AWS risorse e una cronologia delle modifiche alla configurazione di tali risorse. AWS Config ora supporta AWS CodeBuild come AWS risorsa, il che significa che il servizio può tracciare i tuoi CodeBuild progetti. Per ulteriori informazioni su AWS Config, consulta [What is AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) nella *Guida per gli AWS Config sviluppatori*.

Puoi visualizzare le seguenti informazioni sulle CodeBuild risorse nella pagina **Inventario delle risorse** della AWS Config console:
+ Una cronologia delle modifiche alla CodeBuild configurazione.
+ Dettagli di configurazione per ogni CodeBuild progetto.
+ Rapporti con altre AWS risorse.
+ Un elenco di modifiche ai tuoi CodeBuild progetti.

**Topics**
+ [

## Usare CodeBuild con AWS Config
](#how-to-integrate-config-run)
+ [

## Passaggio 3: Visualizza AWS CodeBuild i dati nella console AWS Config
](#viewing-config-details)

## Usare CodeBuild con AWS Config
<a name="how-to-integrate-config-run"></a>

Le procedure riportate in questo argomento mostrano come impostare AWS Config e cercare CodeBuild progetti.

**Topics**
+ [

### Prerequisiti
](#how-to-create-a-build-project)
+ [

### Fase 1: Configurazione AWS Config
](#setup-config)
+ [

### Passaggio 2: cerca i AWS CodeBuild progetti
](#lookup-projects)

### Prerequisiti
<a name="how-to-create-a-build-project"></a>

Crea il tuo AWS CodeBuild progetto. Per istruzioni, consulta [Creazione di un progetto di compilazione](create-project.md).

### Fase 1: Configurazione AWS Config
<a name="setup-config"></a>
+ [Impostazione di AWS Config (console)](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [Impostazione di AWS Config (AWS CLI)](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)

**Nota**  
Dopo aver completato la configurazione, potrebbero essere necessari fino a 10 minuti prima di poter visualizzare AWS CodeBuild i progetti nella AWS Config console.

### Passaggio 2: cerca i AWS CodeBuild progetti
<a name="lookup-projects"></a>

1. Accedi alla console di AWS gestione e apri la AWS Config console all'indirizzo [https://console.aws.amazon.com/config.](https://console.aws.amazon.com/config) 

1. Nella pagina **Inventario delle risorse**, seleziona **AWS CodeBuild Progetto in Tipo** di **risorsa**. Scorri verso il basso e seleziona la casella di controllo **CodeBuilddel progetto**.

1. Scegliere **Look up (Cerca)**.

1. Dopo aver aggiunto l'elenco dei CodeBuild progetti, scegli il link del nome CodeBuild del progetto nella colonna **Config timeline**.

## Passaggio 3: Visualizza AWS CodeBuild i dati nella console AWS Config
<a name="viewing-config-details"></a>

Quando cerchi le risorse nella pagina **Inventario delle risorse**, puoi scegliere la AWS Config sequenza temporale per visualizzare i dettagli CodeBuild del tuo progetto. La pagina dei dettagli per una risorsa fornisce informazioni sulla configurazione, sulle relazioni e sul numero di modifiche apportate a tale risorsa. 

I blocchi nella parte superiore della pagina sono complessivamente denominati timeline. La timeline mostra la data e l'ora in cui è stata effettuata la registrazione.

Per ulteriori informazioni, consulta [Visualizzazione dei dettagli di configurazione nella AWS Config console](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html) nella *Guida per gli AWS Config sviluppatori*.

# Crea un esempio di notifiche per CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events dispone di un supporto integrato per AWS CodeBuild. CloudWatch Events è un flusso di eventi di sistema che descrive i cambiamenti nelle tue AWS risorse. Con CloudWatch Events, scrivi regole dichiarative per associare gli eventi di interesse alle azioni automatiche da intraprendere. Questo esempio utilizza Amazon CloudWatch Events e Amazon Simple Notification Service (Amazon SNS) per inviare notifiche di build agli abbonati ogni volta che le build hanno successo, falliscono, passano da una fase di compilazione all'altra o qualsiasi combinazione di questi eventi.

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon CloudWatch e Amazon SNS. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i CloudWatch](https://aws.amazon.com/codebuild/pricing) [prezzi di Amazon](https://aws.amazon.com/cloudwatch/pricing) e i prezzi di [Amazon SNS](https://aws.amazon.com/sns/pricing).

**Topics**
+ [

## Esegui l'esempio di notifiche di compilazione
](#sample-build-notifications-running)
+ [

# Informazioni di riferimento sul formato di input delle notifiche di compilazione
](sample-build-notifications-ref.md)

## Esegui l'esempio di notifiche di compilazione
<a name="sample-build-notifications-running"></a>

Utilizza la procedura seguente per eseguire l'esempio di notifiche di compilazione.

**Per eseguire questo esempio**

1. Se hai già configurato e sottoscritto un argomento in Amazon SNS che desideri utilizzare per questo esempio, vai avanti al passaggio 4. Altrimenti, se utilizzi un utente IAM anziché un account AWS root o un utente amministratore per lavorare con Amazon SNS, aggiungi la seguente dichiarazione (tra *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) all'utente (o al gruppo IAM a cui l'utente è associato). L'utilizzo di un account AWS root non è consigliato. Questa dichiarazione consente di visualizzare, creare, sottoscrivere e testare l'invio di notifiche agli argomenti in Amazon SNS. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy esistente.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa politica deve disporre dell'autorizzazione in IAM per modificare le politiche.  
Per ulteriori informazioni, consulta [Modifica delle politiche gestite dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) o la sezione «Modificare o eliminare una politica in linea per un gruppo, un utente o un ruolo» in [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) nella *IAM* User Guide.

1. Crea o identifica un argomento in Amazon SNS. AWS CodeBuild utilizza CloudWatch Events per inviare notifiche di build su questo argomento tramite Amazon SNS. 

   Per creare un argomento:

   1. [Apri la console Amazon SNS in https://console.aws.amazon.com /sns.](https://console.aws.amazon.com/sns)

   1. Scegli **Create topic** (Crea argomento). 

   1. In **Create new topic (Crea nuovo argomento)** per **Topic name (Nome argomento)**, digitare un nome per l'argomento, ad esempio **CodeBuildDemoTopic**. (Se si sceglie un nome diverso, sostituirlo in tutto il campione). 

   1. Scegli **Create topic** (Crea argomento).

   1. Nella CodeBuildDemoTopic pagina **Dettagli argomento:**, copia il valore **Arn dell'argomento**. che servirà per la fase successiva. 

        
![\[Il valore Arn dell'argomento.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/topic-arn.png)

      

   Per ulteriori informazioni, consulta [Creare un argomento](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) nella *Amazon SNS Developer* Guide.

1. Abbonare uno o più destinatari all'argomento per ricevere notifiche e-mail. 

   Per sottoscrivere un destinatario a un argomento:

   1. **Con la console Amazon SNS aperta dal passaggio precedente, nel riquadro di navigazione, scegli **Abbonamenti, quindi scegli Crea abbonamento**.**

   1. In **Create subscription (Crea abbonamento)**, per **Topic ARN (ARN argomento)**, copiare e incollare l'ARN dell'argomento dalla fase precedente.

   1. Per **Protocollo**, scegli **E-mail**.

   1. Per **Endpoint**, immettere l'indirizzo e-mail completo del destinatario. 

        
![\[La configurazione dell'abbonamento.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Selezionare **Crea sottoscrizione**.

   1. Amazon SNS invia un'e-mail di conferma dell'abbonamento al destinatario. Per iniziare a ricevere le notifiche e-mail, il destinatario deve selezionare il link **Confirm subscription (Conferma abbonamento)** nell'e-mail di conferma dell'abbonamento. Dopo che il destinatario ha fatto clic sul link, se l'iscrizione è avvenuta correttamente, Amazon SNS visualizza un messaggio di conferma nel browser Web del destinatario.

   Per ulteriori informazioni, consulta [Abbonarsi a un argomento](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) nella *Amazon SNS Developer Guide*.

1. Se utilizzi un utente anziché un account AWS root o un utente amministratore per lavorare con CloudWatch Events, aggiungi la seguente dichiarazione (tra *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) all'utente (o al gruppo IAM a cui l'utente è associato). L'utilizzo di un account AWS root non è consigliato. Questa istruzione viene utilizzata per consentire all'utente di lavorare con CloudWatch Events. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy esistente.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa politica deve disporre dell'autorizzazione in IAM per modificare le politiche.  
Per ulteriori informazioni, consulta [Modifica delle politiche gestite dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) o la sezione «Modificare o eliminare una politica in linea per un gruppo, un utente o un ruolo» in [Working with inline policies (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) nella *IAM* User Guide.

1. Crea una regola in CloudWatch Events. Per fare ciò, apri la CloudWatch console, in [https://console.aws.amazon.com/cloudwatch.](https://console.aws.amazon.com/cloudwatch)

1. Nel riquadro di navigazione, in **Events (Eventi)**, selezionare **Rules (Regolamento)**, quindi **Create rule (Crea regolamento)**. 

1. Nella pagina **Step 1: Create rule (Fase 1: Creare regolamento)**, dovrebbero già essere selezionate le opzioni **Event Pattern (Modello evento)** e **Build event pattern to match events by service (Crea un modello evento da abbinare agli eventi in base al servizio)**. 

1. Per **Service Name (Nome del servizio)**, selezionare **CodeBuild**. Per **Event Type (Tipo di evento)**, **All Events (Tutti gli eventi)** dovrebbe già essere selezionato.

1. Il codice seguente deve essere visualizzato nell'**anteprima del modello di evento**:

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Scegliete **Modifica** e sostituite il codice in **Event Pattern Preview** con uno dei due modelli di regole seguenti.

   Il primo modello di regola attiva un evento quando una compilazione viene avviata o completata, per i progetti di compilazione specificati in AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Nella regola precedente, eseguire le modifiche al codice seguente laddove necessario.
   + Per attivare un evento quando una compilazione viene avviata o completata, lasciare tutti i valori come illustrato nell'array `build-status` oppure rimuovere completamente l'array `build-status`. 
   + Per attivare un evento solo quando una compilazione viene completata, rimuovere `IN_PROGRESS` dall'array `build-status`. 
   + Per attivare un evento solo quando una compilazione viene avviata, rimuovere tutti i valori eccetto `IN_PROGRESS` dall'array `build-status`.
   + Per attivare gli eventi per tutti i progetti di compilazione, rimuovere completamente l'array `project-name`.
   + Per attivare gli eventi solo per singoli progetti di compilazione, specificare il nome di ciascun progetto di compilazione nell'array `project-name`. 

   Il secondo modello di regola attiva un evento ogni volta che una compilazione si sposta da una fase di compilazione a un'altra, per i progetti di compilazione specificati in AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Nella regola precedente, eseguire le modifiche al codice seguente laddove necessario.
   + Per attivare un evento per ogni modifica della fase di compilazione (che può inviare fino a nove notifiche per ogni compilazione), lasciare tutti i valori come illustrato nell'array `completed-phase` oppure rimuovere completamente l'array `completed-phase`.
   + Per attivare gli eventi solo per le singole modifiche della fase di compilazione, rimuovere il nome di ciascun progetto di compilazione nell'array `completed-phase` per cui non si desidera attivare un evento.
   + Per attivare un evento per ogni modifica dello stato della fase di compilazione, lasciare tutti i valori come illustrato nell'array `completed-phase-status` oppure rimuovere completamente l'array `completed-phase-status`.
   + Per attivare gli eventi solo per le singole modifiche dello stato della fase di compilazione, rimuovere il nome di ciascuno stato della fase di compilazione nell'array `completed-phase-status` per cui non si desidera attivare un evento.
   + Per attivare gli eventi per tutti i progetti di compilazione, rimuovi l'array `project-name`.
   + Per attivare gli eventi per i singoli progetti di compilazione, specificare il nome di ciascun progetto di compilazione nell'array `project-name`. 

   Per ulteriori informazioni sui pattern di eventi, consulta [Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) nella Amazon EventBridge User Guide.

   Per ulteriori informazioni sul filtraggio con pattern di eventi, consulta [Content-based Filtering with Event Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) nella Amazon EventBridge User Guide.
**Nota**  
Se si desidera attivare gli eventi sia per le modifiche dello stato della compilazione che per le modifiche della fase di compilazione, è necessario creare due regole separate, una per le modifiche dello stato della compilazione e l'altra per le modifiche della fase di compilazione. Se si tenta di combinare entrambe le regole in una singola regola, la regola combinata potrebbe produrre risultati imprevisti o smettere di funzionare del tutto.

   Al termine della sostituzione del codice, selezionare **Save (Salva)**.

1. In **Targets** (Destinazioni), seleziona **Add target** (Aggiungi destinazione). 

1. Nell'elenco degli obiettivi, selezionare **SNS topic (Argomento SNS)**; 

1. Per **Argomento**, selezionare l'argomento identificato o creato in precedenza. 

1. Espandere **Configure input (Configura input)**, quindi selezionare **Input Transformer (Trasformatore di input)**. 

1. Nella casella **Input Path (Percorso dell'input)**, immettere uno dei seguenti percorsi di input.

   Per una regola con il valore `CodeBuild Build State Change` per `detail-type`, immettere quanto segue.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Per una regola con il valore `CodeBuild Build Phase Change` per `detail-type`, immettere quanto segue.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Per ottenere altri tipi di informazioni, consultare [Informazioni di riferimento sul formato di input delle notifiche di compilazione](sample-build-notifications-ref.md).

1. Nella casella **Input Template (Modello dell'input)**, immettere uno dei seguenti modelli di input.

   Per una regola con il valore `CodeBuild Build State Change` per `detail-type`, immettere quanto segue.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Per una regola con il valore `CodeBuild Build Phase Change` per `detail-type`, immettere quanto segue.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

1. Scegli **Configura dettagli**.

1. Nella pagina **Step 2: Configure rule details (Fase 2: Configurare i dettagli della regola)**, immettere un nome e una descrizione facoltativa. Per **State (Stato)**, lasciare l'opzione **Enabled (Abilitato)** selezionata.

1. Scegli **Crea regola**. 

1. Crea progetti di compilazione, esegui le build e visualizza le informazioni sulle build.

1. Conferma che CodeBuild ora le notifiche di build sono state inviate correttamente. Ad esempio, verificare se le e-mail di notifica di compilazione si trovano nella casella di posta.

Per modificare il comportamento di una regola, nella CloudWatch console, scegli la regola che desideri modificare, scegli **Azioni** e quindi scegli **Modifica**. Apportare le modifiche alla regola, scegliere **Configure details (Configura dettagli)** e quindi selezionare **Update rule (Aggiorna regola)**.

Per smettere di usare una regola per inviare notifiche di build, nella CloudWatch console, scegli la regola che vuoi smettere di usare, scegli **Azioni** e quindi scegli **Disabilita**.

**Per eliminare completamente una regola, nella CloudWatch console, scegli la regola che desideri eliminare, scegli **Azioni** e quindi scegli Elimina.**

# Informazioni di riferimento sul formato di input delle notifiche di compilazione
<a name="sample-build-notifications-ref"></a>

CloudWatch invia notifiche in formato JSON.

Le notifiche di modifica dello stato di compilazione utilizzano il seguente formato:

```
{
  "version": "0",
  "id": "c030038d-8c4d-6141-9545-00ff7b7153EX",
  "detail-type": "CodeBuild Build State Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:28Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "build-status": "SUCCEEDED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
         {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]
    },
    "current-phase": "COMPLETED",
    "current-phase-context": "[]",
    "version": "1"
  }
}
```

Le notifiche di modifica della fase di compilazione utilizzano il seguente formato:

```
{
  "version": "0",
  "id": "43ddc2bd-af76-9ca5-2dc7-b695e15adeEX",
  "detail-type": "CodeBuild Build Phase Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:21Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "completed-phase": "COMPLETED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "completed-phase-context": "[]",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]  
    },
    "completed-phase-status": "SUCCEEDED",
    "completed-phase-duration-seconds": 4,
    "version": "1",
    "completed-phase-start": "Sep 1, 2017 4:14:21 PM",
    "completed-phase-end": "Sep 1, 2017 4:14:26 PM"
  }
}
```

# Crea un esempio di badge con CodeBuild
<a name="sample-build-badges"></a>

AWS CodeBuild ora supporta l'uso dei build badge, che forniscono un'immagine incorporabile e generata dinamicamente (*badge*) che mostra lo stato dell'ultima build di un progetto. Questa immagine è accessibile tramite un URL disponibile pubblicamente generato per il tuo progetto. CodeBuild Ciò consente a chiunque di visualizzare lo stato di un CodeBuild progetto. I badge di compilazione non contengono alcuna informazione di sicurezza, quindi non richiedono l'autenticazione.

**Topics**
+ [

## Crea un progetto di compilazione con i badge di costruzione
](#sample-build-badges-request-running)
+ [

# Accedi ai badge di costruzione AWS CodeBuild
](access-badges.md)
+ [

# Pubblica badge di costruzione CodeBuild
](publish-badges.md)
+ [

# CodeBuild stati dei badge
](badge-statuses.md)

## Crea un progetto di compilazione con i badge di costruzione
<a name="sample-build-badges-request-running"></a>

Utilizza una delle seguenti procedure per creare un progetto di compilazione con i badge di costruzione abilitati. Puoi usare AWS CLI o il. Console di gestione AWS

**Per creare un progetto di compilazione con i badge di compilazione abilitati ()AWS CLI**
+ Per informazioni sulla creazione del progetto di compilazione, consultare [Creazione di un progetto di compilazione (AWS CLI)](create-project.md#create-project-cli). Per includere i badge di costruzione nel AWS CodeBuild progetto, è necessario specificare *badgeEnabled* con un valore di. `true`

**Per creare un progetto di compilazione con i badge di compilazione abilitati (console)**

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione. I nomi dei progetti di compilazione devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1. In **Source (Origine)**, per **Source provider (Provider di origine)**, selezionare il tipo di provider di codice sorgente ed eseguire una delle operazioni seguenti:
**Nota**  
 CodeBuild non supporta i build badge con il provider di sorgenti Amazon S3. Poiché AWS CodePipeline utilizza Amazon S3 per il trasferimento di artefatti, i badge di costruzione non sono supportati per i progetti di compilazione che fanno parte di una pipeline creata in. CodePipeline 
   + Se si seleziona **CodeCommit** in seguito per **Repository (Archivio)**, selezionare il nome dell'archivio. Selezionare **Enable build badge (Abilita badge di compilazione)** per rendere visibile e integrabile lo stato della compilazione del progetto.
   + Se lo desideri **GitHub**, segui le istruzioni per connetterti (o riconnetterti) con. GitHub Nella pagina GitHub **Autorizza l'applicazione**, per **l'accesso all'organizzazione**, scegli **Richiedi accesso** accanto a ciascun repository AWS CodeBuild a cui desideri poter accedere. Dopo aver selezionato **Authorize application (Autorizza applicazione)**, nella console AWS CodeBuild , per **Repository (Archivio)**, selezionare il nome dell'archivio che contiene il codice sorgente. Selezionare **Enable build badge (Abilita badge di compilazione)** per rendere visibile e integrabile lo stato della compilazione del progetto.
   + Se si è selezionato **Bitbucket**, seguire le istruzioni per connettersi (o riconnettersi) a Bitbucket. Nella pagina Bitbucket **Confirm access to your account (Conferma l'accesso all'account)**, per **Organization access (Accesso organizzazione)**, selezionare **Grant access (Concedi accesso)**. Dopo aver scelto **Concedi l'accesso**, torna nella AWS CodeBuild console, per **Repository**, scegli il nome del repository che contiene il codice sorgente. Selezionare **Enable build badge (Abilita badge di compilazione)** per rendere visibile e integrabile lo stato della compilazione del progetto.
**Importante**  
Aggiornare il progetto sorgente potrebbe influire sulla precisione dei badge di compilazione del progetto.

1. In **Environment (Ambiente)**:

   Per **Environment image (Immagine ambiente)**, procedere in uno dei seguenti modi:
   + **Per utilizzare un'immagine Docker gestita da AWS CodeBuild, scegli **Immagine gestita**, quindi effettua le selezioni tra **Sistema operativo**, **Runtime (s)**, **Immagine e Versione dell'immagine**.** Se disponibile, eseguire una selezione da **Environment type (Tipo ambiente)**.
   + Per utilizzare un'altra immagine Docker, selezionare **Custom image (Immagine personalizzata)**. **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Se si sceglie **Other registry (Altro registro)**, fin **External registry URL (URL registro esterno)**, inserire il nome e il tag dell'immagine Docker in Docker Hub, utilizzando il formato `docker repository/docker image name`. Se scegli **Amazon ECR**, utilizza il **repository Amazon ECR e** l'immagine **Amazon ECR per scegliere l'immagine** Docker nel tuo account. AWS 
   + **Per utilizzare un'immagine Docker privata, scegli Immagine personalizzata.** **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Per **Image registry (Registro immagine)**, selezionare **Other registry (Altro registro)**, quindi immettere l'ARN delle credenziali per l'immagine Docker privata. Le credenziali devono essere create da Secrets Manager. Per ulteriori informazioni, consulta [Che cos'è Gestione dei segreti AWS?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) nella *Guida per l'utente di Gestione dei segreti AWS *.

1. In **Service role (Ruolo del servizio)**, procedere in uno dei seguenti modi:
   + Se non disponi di un ruolo CodeBuild di servizio, scegli **Nuovo ruolo di servizio**. In **Nome ruolo**, inserisci un nome per il nuovo ruolo.
   + Se hai un ruolo CodeBuild di servizio, scegli **Ruolo di servizio esistente**. In **Role ARN, scegli il ruolo** di servizio.
**Nota**  
Quando si utilizza la console per creare o aggiornare un progetto di build, è possibile creare contemporaneamente un ruolo di CodeBuild servizio. Per impostazione predefinita, il ruolo funziona solo con tale progetto di compilazione. Se si utilizza la console per associare questo ruolo del servizio con un altro progetto di compilazione, il ruolo viene aggiornato per funzionare con l'altro progetto. Un ruolo del servizio può funzionare con un massimo di 10 progetti di compilazione.

1. In **Buildspec**, esegui una delle seguenti operazioni:
   + Scegliete **Usa un file buildspec per usare il file** buildspec.yml nella directory principale del codice sorgente.
   + Scegli **Inserisci comandi di compilazione per utilizzare la console per inserire i comandi di compilazione**.

   Per ulteriori informazioni, consulta [Riferimento per buildspec](build-spec-ref.md).

1. In **Artifacts (Artefatti)**, per **Type (Tipo)**, procedere in uno dei seguenti modi:
   + Se non si desidera creare artefatti di output di compilazione, scegliere **No artifacts (Nessun artefatto)**.
   + Per archiviare l'output della build in un bucket S3, scegli **Amazon S3**, quindi procedi come segue:
     + Se desideri utilizzare il tuo nome di progetto per la cartella o il file ZIP di output di compilazione, lascia vuoto il campo **Name (Nome)**. In caso contrario, digitare il nome. Per impostazione predefinita, il nome dell'artefatto è quello del progetto. Se si desidera utilizzare un nome diverso, immetterlo nella casella del nome degli artefatti. Se si desidera eseguire l'output di un file .ZIP, includere l'estensione .zip.
     + Per **Bucket name (Nome bucket)** selezionare il nome del bucket di output.
     + Se hai scelto **Insert build commands (Inserisci comandi di compilazione)** in una fase precedente di questa procedura, quindi per **Output files (File di output)**, immetti le posizioni dei file di compilazione che desideri inserire nella cartella o nel file ZIP dell'output di compilazione. Per più posizioni, separarne ognuna con una virgola (per esempio, `appspec.yml, target/my-app.jar`). Per ulteriori informazioni, consultare la descrizione di `files` in [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. Espandere **Additional configuration (Configurazione aggiuntiva)** e scegliere le opzioni come opportuno.

1. Scegliere **Create build project (Crea progetto di compilazione)**. Nella pagina **Review (Verifica)**, selezionare **Start build (Avvia compilazione)** per eseguire la compilazione.

# Accedi ai badge di costruzione AWS CodeBuild
<a name="access-badges"></a>

Puoi utilizzare la AWS CodeBuild console o accedere AWS CLI ai badge di costruzione.
+ Nella CodeBuild console, nell'elenco dei progetti di compilazione, nella colonna **Nome**, scegli il link che corrisponde al progetto di build. Nella *project-name* pagina **Crea progetto:**, in **Configurazione**, scegli **Copia l'URL del badge**. Per ulteriori informazioni, consulta [Visualizzazione dei dettagli di un progetto di compilazione (console)](view-project-details.md#view-project-details-console).
+ Nella AWS CLI, esegui il `batch-get-projects` comando. L'URL del badge di compilazione è incluso nella sezione dei dettagli dell'ambiente di progetto dell'output. Per ulteriori informazioni, consulta [Visualizzazione dei dettagli di un progetto di compilazione (AWS CLI)](view-project-details.md#view-project-details-cli).

L'URL di richiesta del badge di compilazione viene generato con un ramo predefinito comune, ma puoi specificare qualsiasi ramo nel tuo repository di origine che hai utilizzato per eseguire una build. Esempio:

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&branch=<branch>
```

Puoi anche specificare un tag dal tuo repository di origine sostituendo il `branch` parametro con il parametro nell'URL del badge`tag`. Esempio: 

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&tag=<tag>
```

# Pubblica badge di costruzione CodeBuild
<a name="publish-badges"></a>

Puoi visualizzare lo stato dell'ultima build in un file markdown usando l'URL del tuo build badge in un'immagine markdown. Ciò è utile per visualizzare lo stato della build più recente nel file readme.md nel repository dei sorgenti (ad esempio, o). GitHub CodeCommit Esempio:

```
![](<build badge URL>)
```

# CodeBuild stati dei badge
<a name="badge-statuses"></a>

Il badge CodeBuild build può avere uno dei seguenti stati.
+ **PASSING (PASSAGGIO)** La più recente compilazione sul ramo determinato è passata. 
+ **FAILING (IN ERRORE)** La più recente compilazione sul ramo determinato è scaduta, non è riuscita, ha problemi o è stata interrotta.
+ **IN\$1PROGRESS (IN CORSO)** La più recente compilazione nel ramo determinato è in corso.
+ **UNKNOWN (SCONOSCIUTO)** Il progetto non ha ancora eseguito una compilazione per il determinata ramo o per niente. Inoltre, la funzionalità dei badge di compilazione potrebbe essere stata disabilitata.

# «Rapporto di prova utilizzando il AWS CLI» campione
<a name="sample-test-report-cli"></a>

I test specificati nel file buildspec vengono eseguiti durante la compilazione. Questo esempio mostra come utilizzare il per AWS CLI incorporare i test nelle build in CodeBuild. È possibile utilizzare JUnit per creare test unitari oppure utilizzare un altro strumento per creare test di configurazione. La successiva valutazione dei risultati dei test consentirà di risolvere eventuali problemi od ottimizzare l'applicazione. 

Puoi utilizzare l' CodeBuild API o la AWS CodeBuild console per accedere ai risultati del test. In questo esempio viene illustrato come configurare il report in modo che i risultati dei test vengano esportati in un bucket S3. 

**Topics**
+ [

## Esegui l'esempio del rapporto di prova
](#sample-test-report-cli-run)

## Esegui l'esempio del rapporto di prova
<a name="sample-test-report-cli-run"></a>

Utilizza i seguenti passaggi per eseguire l'esempio del rapporto di prova.

**Topics**
+ [

### Prerequisiti
](#sample-test-report-cli-prerequisites)
+ [

### Fase 1: Creare un gruppo di report
](#sample-test-report-cli-create-report)
+ [

### Fase 2: Configurare un progetto con un gruppo di report
](#sample-test-report-cli-create-project-with-report)
+ [

### Fase 3: Esecuzione e visualizzazione dei risultati di un report
](#sample-test-report-cli-run-and-view-report-results)

### Prerequisiti
<a name="sample-test-report-cli-prerequisites"></a>
+ Crea i casi di test. Questo esempio presuppone l'esistenza di casi di test da includere nel report di test esemplificativo. Ricorda di specificare la posizione dei file di test nel file buildspec. 

  Sono supportati i seguenti formati di file di report di test:
  + Cucumber JSON (.json)
  + JUnit XML (.xml)
  + NUnit XML (.xml)
  + NUnit3 XML (.xml)
  + TestNg XML (.xml)
  + Visual Studio TRX (.trx)
  + Codice XML di Visual Studio TRX (.xml)

  Crea i tuoi casi di test con qualsiasi framework di test in grado di creare file di report in uno di questi formati (ad esempio, il JUnit plug-in Surefire, TestNG o Cucumber).
+ Crea un bucket S3 e annotane il nome. Per ulteriori informazioni, vedi [Come posso creare](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) un bucket S3? nella Guida per l'*utente di Amazon S3*. 
+ Crea un ruolo IAM e prendi nota del relativo ARN. Ti servirà in procinto di creare il progetto di compilazione. 
+ Se il ruolo non dispone delle autorizzazioni seguenti, aggiungile. 

  ```
  {
      "Effect": "Allow",
      "Resource": [
          "*"
      ],
      "Action": [
          "codebuild:CreateReportGroup",
          "codebuild:CreateReport",
          "codebuild:UpdateReport",
          "codebuild:BatchPutTestCases"
      ]
  }
  ```

   Per ulteriori informazioni, consulta [Autorizzazioni per le operazioni correlate ai report di test](test-permissions.md#test-permissions-related-to-reporting). 

### Fase 1: Creare un gruppo di report
<a name="sample-test-report-cli-create-report"></a>

1. Crea un file denominato `CreateReportGroupInput.json`. 

1. Creare una cartella nel bucket S3 in cui vengano esportati i risultati dei test. 

1. Copiare quanto segue in `CreateReportGroupInput.json`. Per `<bucket-name>`, utilizzare il nome del bucket S3. Per `<path-to-folder>`, immettere il percorso della cartella nel bucket S3. 

   ```
   {
     "name": "<report-name>",
     "type": "TEST",
     "exportConfig": {
       "exportConfigType": "S3",
       "s3Destination": {
         "bucket": "<bucket-name>",
         "path": "<path-to-folder>",
         "packaging": "NONE"
       }
     }
   }
   ```

1. Eseguire il comando sottostante nella directory che contiene `CreateReportGroupInput.json`.

   ```
   aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
   ```

   L'output sarà simile al seguente. Annota l'ARN per `reportGroup`, per poterlo utilizzare nel momento in cui verrà creato un progetto a esso correlato.

   ```
   {
     "reportGroup": {
       "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/<report-name>",
       "name": "<report-name>",
       "type": "TEST",
       "exportConfig": {
         "exportConfigType": "S3",
         "s3Destination": {
           "bucket": "<s3-bucket-name>",
           "path": "<folder-path>",
           "packaging": "NONE",
           "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3"
         }
       },
       "created": 1570837165.885,
       "lastModified": 1570837165.885
     }
   }
   ```

### Fase 2: Configurare un progetto con un gruppo di report
<a name="sample-test-report-cli-create-project-with-report"></a>

Per eseguire un report, devi prima creare un progetto di CodeBuild compilazione configurato con il tuo gruppo di report. I casi di test specificati per il gruppo di report vengono eseguiti in concomitanza di una compilazione. 

1. Creare un file buildspec denominato `buildspec.yml`. 

1. Utilizzare il seguente YAML come modello per il file `buildspec.yml`. Bisogna includere i comandi che eseguono i test. Nella sezione `reports`, vanno specificati i file contenenti i risultati dei casi di test. Questi file memorizzano i risultati dei test a cui puoi accedere CodeBuild. e scadono 30 giorni dopo la creazione. Inoltre, differiscono dai file con i risultati dei casi di test non elaborati che vengono esportati in un bucket S3.

   ```
   version: 0.2
       phases:
       install:
           runtime-versions:
               java: openjdk8
       build:
         commands:
           - echo Running tests 
           - <enter commands to run your tests>
           
       reports:
         <report-name-or-arn>: #test file information
         files:
           - '<test-result-files>'
         base-directory: '<optional-base-directory>'
         discard-paths: false #do not remove file paths from test result files
   ```
**Nota**  
Invece dell'ARN di un gruppo di report esistente, è possibile specificare un nome per un gruppo di report non ancora creato. Se specifichi un nome anziché un ARN, CodeBuild crea un gruppo di report quando esegue una build. Il nome comprenderà il nome del progetto e quello specificato nel file buildspec in questo formato: `project-name-report-group-name`. Per ulteriori informazioni, consultare [Crea report di test](report-create.md) e [Denominazione dei gruppi di report](test-report-group-naming.md). 

1. Crea un file denominato `project.json`. Tale file contiene l'input per il comando **create-project**. 

1. Copiare il seguente JSON in `project.json`. Per `source`, immettere il tipo e percorso del repository contenente i file di origine. Per `serviceRole`, specificare l'ARN del ruolo in uso. 

   ```
   {
     "name": "test-report-project",
     "description": "sample-test-report-project",
     "source": {
       "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE",
       "location": "<your-source-url>"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "cache": {
       "type": "NO_CACHE"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "small"
     },
     "serviceRole": "arn:aws:iam::<your-aws-account-id>:role/service-role/<your-role-name>"
   }
   ```

1. Eseguire il comando sottostante nella directory che contiene `project.json`. Viene così creato un progetto denominato `test-project`. 

   ```
   aws codebuild create-project --cli-input-json file://project.json
   ```

### Fase 3: Esecuzione e visualizzazione dei risultati di un report
<a name="sample-test-report-cli-run-and-view-report-results"></a>

In questa sezione, viene eseguita una compilazione del progetto creato in precedenza. Durante il processo di compilazione, CodeBuild crea un rapporto con i risultati dei casi di test. Il report è incluso nel gruppo di report specificato. 

1. Per avviare una build, esegui il comando seguente. `test-report-project`è il nome del progetto di compilazione creato sopra. prendendo poi nota dell'ID di compilazione visualizzato nell'output. 

   ```
   aws codebuild start-build --project-name test-report-project
   ```

1. Per ottenere informazioni sulla compilazione, incluso l'ARN del report, eseguire il comando sottostante. Per `<build-id>`, specificare l'ID di compilazione. Prendi nota del rapporto ARN nella `reportArns` proprietà dell'output. 

   ```
   aws codebuild batch-get-builds --ids <build-id>
   ```

1. Esegui il comando seguente per ottenere dettagli sul rapporto. Per `<report-arn>`, specificare l’ARN del report. 

   ```
   aws codebuild batch-get-reports --report-arns <report-arn>
   ```

   L'output sarà simile al seguente. Questo output di esempio mostra quanti dei test hanno avuto esito positivo, non sono riusciti, sono stati ignorati e hanno generato un errore o restituito uno stato sconosciuto.

   ```
   {
     "reports": [
       {
         "status": "FAILED",
         "reportGroupArn": "<report-group-arn>",
         "name": "<report-group-name>",
         "created": 1573324770.154,
         "exportConfig": {
           "exportConfigType": "S3",
           "s3Destination": {
             "bucket": "<amzn-s3-demo-bucket>",
             "path": "<path-to-your-report-results>",
             "packaging": "NONE",
             "encryptionKey": "<encryption-key>"
           }
         },
         "expired": 1575916770.0,
         "truncated": false,
         "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>:2c254862-ddf6-4831-a53f-6839a73829c1",
         "type": "TEST",
         "arn": "<report-arn>",
         "testSummary": {
           "durationInNanoSeconds": 6657770,
           "total": 11,
           "statusCounts": {
             "FAILED": 3,
             "SKIPPED": 7,
             "ERROR": 0,
             "SUCCEEDED": 1,
             "UNKNOWN": 0
           }
         }
       }
     ],
     "reportsNotFound": []
   }
   ```

1. Eseguire il comando sottostante per elencare le informazioni sui casi di test del report. Per `<report-arn>`, specificare l'ARN del report. Per il parametro facoltativo `--filter`, è possibile specificare un risultato di stato (`SUCCEEDED`, `FAILED`, `SKIPPED`, `ERROR` o `UNKNOWN`). 

   ```
   aws codebuild describe-test-cases \
       --report-arn <report-arn> \
       --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN
   ```

    L'output sarà simile al seguente. 

   ```
   {
     "testCases": [
       {
         "status": "FAILED",
         "name": "Test case 1",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       },
       {
         "status": "SUCCEEDED",
         "name": "Test case 2",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       }
     ]
   }
   ```

# Esempi Docker per CodeBuild
<a name="sample-docker-section"></a>

Questa sezione descrive esempi di integrazioni tra Docker e. AWS CodeBuild


| Project N.E.M.O. | Description | 
| --- | --- | 
|  [Docker in un esempio di immagine personalizzato per CodeBuild](sample-docker-custom-image.md)  |  Questo esempio crea ed esegue un'immagine Docker utilizzando CodeBuild un'immagine di build Docker personalizzata (`docker:dind`in Docker Hub).   | 
|  [Esempio di server di creazione di immagini Docker per CodeBuild](sample-docker-server.md)  |  Questo esempio scarica le build Docker su un server di creazione di immagini gestito.   | 
|  [Windows Docker crea un esempio per CodeBuild](sample-windows-docker-custom-image.md)  |  Questo esempio crea ed esegue un'immagine Windows Docker utilizzando. CodeBuild  | 
|  [Esempio di «Pubblica immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild](sample-docker.md)  |  Questo esempio produce come output di build un'immagine Docker e quindi invia l'immagine Docker a un repository di immagini Amazon Elastic Container Registry (Amazon ECR).   | 
|  [Registro privato con Gestione dei segreti AWS esempio per CodeBuild](sample-private-registry.md)  |  Questo esempio mostra come utilizzare un'immagine Docker archiviata in un registro privato come ambiente di runtime. CodeBuild   | 

# Docker in un esempio di immagine personalizzato per CodeBuild
<a name="sample-docker-custom-image"></a>

L'esempio seguente crea ed esegue un'immagine Docker utilizzando AWS CodeBuild un'immagine di build Docker personalizzata (`docker:dind`in Docker Hub). 

Per scoprire come creare un'immagine Docker utilizzando invece un'immagine di build fornita CodeBuild con il supporto Docker, consulta il nostro. [Esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md)

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo AWS account. Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon S3 e AWS KMS CloudWatch Logs. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i prezzi](https://aws.amazon.com/codebuild/pricing) di [Amazon S3, i prezzi](https://aws.amazon.com/s3/pricing) e [AWS Key Management Service i prezzi](https://aws.amazon.com/kms/pricing) di [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

## Esegui Docker in un esempio di immagine personalizzato
](#sample-docker-custom-image-running)

## Esegui Docker in un esempio di immagine personalizzato
<a name="sample-docker-custom-image-running"></a>

Usa la seguente procedura per eseguire il Docker in un esempio di immagine personalizzato. Per ulteriori informazioni su questo esempio, vedere[Docker in un esempio di immagine personalizzato per CodeBuild](#sample-docker-custom-image).

**Per eseguire Docker in un esempio di immagine personalizzato**

1. Crea i file come descritto nelle [File](#sample-docker-custom-image-files) sezioni [Struttura delle directory](#sample-docker-custom-image-dir) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

1. Crea un progetto di compilazione, esegui la build e visualizza le relative informazioni sulla build.

   Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "sample-docker-custom-image-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "docker:dind",
       "computeType": "BUILD_GENERAL1_SMALL",
       "privilegedMode": false
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```
**Nota**  
Per impostazione predefinita, il daemon Docker è abilitato per le build non VPC. Se desideri utilizzare i contenitori Docker per le build VPC, [consulta Runtime Privilege e Linux Capabilities sul sito Web di Docker Docs e](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) abilita la modalità privilegiata. Inoltre, Windows non supporta la modalità privilegiata.

1. Per vedere i risultati della compilazione, cercare la stringa `Hello, World!` nel log di compilazione. Per ulteriori informazioni, consulta [Visualizzazione dei dettagli delle compilazioni](view-build-details.md).

### Struttura delle directory
<a name="sample-docker-custom-image-dir"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### File
<a name="sample-docker-custom-image-files"></a>

L'immagine di base del sistema operativo utilizzata in questo esempio è di Ubuntu. L'esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (in `(root directory name)`)

```
FROM maven:3.3.9-jdk-8
 
RUN echo "Hello World"
```

# Esempio di server di creazione di immagini Docker per CodeBuild
<a name="sample-docker-server"></a>

L'esempio seguente scarica le build Docker su un server di creazione di immagini gestito. Puoi adattare questo esempio per fornire un server di creazione di immagini Docker dedicato e gestito nella configurazione del tuo progetto. CodeBuild Tieni presente che l'istanza fornita è attiva mentre le build vengono eseguite attivamente per il progetto e viene interrotta quando le build non sono in esecuzione. L'istanza fornita viene archiviata per un massimo di un mese prima di essere riciclata. Per ulteriori informazioni, consulta [ CodeBuild Docker](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability) Server Capability.

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo AWS account. Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon S3 e AWS KMS CloudWatch Logs. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i prezzi](https://aws.amazon.com/codebuild/pricing) di [Amazon S3, i prezzi](https://aws.amazon.com/s3/pricing) e [AWS Key Management Service i prezzi](https://aws.amazon.com/kms/pricing) di [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

## Configura un server Docker
](#sample-docker-server-running)

## Configura un server Docker
<a name="sample-docker-server-running"></a>

Utilizza la seguente procedura per fornire un ambiente di calcolo dedicato per un CodeBuild progetto che gestisce i carichi di lavoro Docker e archivia i livelli di immagine Docker. 

**Per configurare un server Docker**

1. Crea i file come descritto nelle [File](#sample-docker-server-files) sezioni [Struttura delle directory](#sample-docker-server-dir) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

1. Crea un progetto di compilazione, esegui la build e visualizza le relative informazioni sulla build:

   1. Nella sezione **Ambiente** della console, scegli **Configurazione aggiuntiva, vai alla configurazione** **del server Docker**, quindi seleziona **Abilita il server docker per** questo progetto. **Puoi quindi scegliere il **tipo di elaborazione del server Docker** e fornire una credenziale di registro.**

   1. Se si utilizza il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del comando potrebbe essere simile a questo. `create-project` (Sostituire i segnaposto con i propri valori).

      ```
      {
        "name": "sample-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "security-groups-ID" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name"
      }
      ```
**Nota**  
I gruppi di sicurezza configurati per i server Docker dovrebbero consentire il traffico di rete in ingresso dal VPC configurato nel progetto. Dovrebbero consentire l'ingresso sulla porta 9876.

1. Per vedere i risultati della compilazione, cercare la stringa `Hello, World!` nel log di compilazione. Per ulteriori informazioni, consulta [Visualizzazione dei dettagli delle compilazioni](view-build-details.md).

### Struttura delle directory
<a name="sample-docker-server-dir"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### File
<a name="sample-docker-server-files"></a>

L'immagine di base del sistema operativo utilizzata in questo esempio è di Ubuntu. L'esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  build:
    commands:
      - docker buildx build -t helloworld --load .
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (in `(root directory name)`)

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest 
 
RUN echo "Hello World"
```

# Windows Docker crea un esempio per CodeBuild
<a name="sample-windows-docker-custom-image"></a>

L'esempio seguente crea ed esegue un'immagine di Windows Docker utilizzando. CodeBuild

**Topics**
+ [

## Esempio di build di Esegui Windows Docker
](#sample-windows-docker-build-running)

## Esempio di build di Esegui Windows Docker
<a name="sample-windows-docker-build-running"></a>

Utilizzare la procedura seguente per eseguire le build di Windows Docker.

**Per eseguire le build di Windows Docker, esempio**

1. Crea i file come descritto nelle [File](#sample-windows-docker-custom-image-files) sezioni [Struttura delle directory](#sample-windows-docker-custom-image-dir) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

1. Crea una flotta. `WINDOWS_EC2`

   Se usi il AWS CLI per creare la flotta, l'input in formato JSON del `create-fleet` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "fleet-name",
     "baseCapacity": 1,
     "environmentType": "WINDOWS_EC2",
     "computeType": "BUILD_GENERAL1_MEDIUM"
   }
   ```

1. Crea un progetto di compilazione, esegui la build e visualizza le informazioni relative alla build.

   Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "project-name",
     "source": {
       "type": "S3",
       "location": "bucket-name/DockerImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "WINDOWS_EC2",
       "image": "Windows",
       "computeType": "BUILD_GENERAL1_MEDIUM",
       "fleet": {
          "fleetArn": "fleet-arn"
       }
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name"
   }
   ```

1. Per vedere i risultati della compilazione, cercare la stringa `Hello, World!` nel log di compilazione. Per ulteriori informazioni, consulta [Visualizzazione dei dettagli delle compilazioni](view-build-details.md).

### Struttura delle directory
<a name="sample-windows-docker-custom-image-dir"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### File
<a name="sample-windows-docker-custom-image-files"></a>

L'immagine di base del sistema operativo utilizzato in questo esempio è. `mcr.microsoft.com/windows/servercore:ltsc2022` L'esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld powershell -Command "Write-Host 'Hello World!'"
```

`Dockerfile` (in `(root directory name)`)

```
FROM mcr.microsoft.com/windows/servercore:ltsc2022

RUN powershell -Command "Write-Host 'Hello World'"
```

# Esempio di «Pubblica immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild
<a name="sample-docker"></a>

Questo esempio produce come output di build un'immagine Docker e quindi invia l'immagine Docker a un repository di immagini Amazon Elastic Container Registry (Amazon ECR). Questo esempio può essere modificato per inviare l'immagine Docker a Docker Hub. Per ulteriori informazioni, consulta [Adatta l'esempio «Pubblica immagine Docker su Amazon ECR' per inviarlo a Docker Hub](sample-docker-docker-hub.md).

Per imparare a compilare un'immagine Docker utilizzando un'immagine Docker di compilazione personalizzata, (`docker:dind` in Docker Hub), consulta [Docker in un esempio di immagine personalizzata](sample-docker-custom-image.md).

Questo esempio è stato testato sulla base di `golang:1.12`.

Questo esempio utilizza la nuova funzione di compilazioni Docker a più fasi, che produce un'immagine Docker come output della compilazione. Quindi invia l'immagine Docker a un repository di immagini Amazon ECR. Le compilazioni di immagini Docker a più fasi aiutano a ridurre la dimensione dell'immagine Docker finale. Per ulteriori informazioni, consultare la pagina relativa all'[utilizzo di compilazioni a più fasi con Docker](https://docs.docker.com/engine/userguide/eng-image/multistage-build/).

**Importante**  
L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono possibili addebiti per AWS CodeBuild e per AWS risorse e azioni relative ad Amazon S3 AWS KMS, CloudWatch Logs e Amazon ECR. Per ulteriori informazioni, consulta [CodeBuild i prezzi, i prezzi](https://aws.amazon.com/codebuild/pricing) di [Amazon S3, i prezzi, i AWS Key Management Service](https://aws.amazon.com/s3/pricing) [prezzi](https://aws.amazon.com/kms/pricing) di [Amazon e CloudWatch i prezzi](https://aws.amazon.com/cloudwatch/pricing) di [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [

## Esegui l'esempio «Pubblica immagine Docker su Amazon ECR'
](#sample-docker-running)
+ [

# Adatta l'esempio «Pubblica immagine Docker su Amazon ECR' per inviarlo a Docker Hub
](sample-docker-docker-hub.md)

## Esegui l'esempio «Pubblica immagine Docker su Amazon ECR'
<a name="sample-docker-running"></a>

Utilizza la procedura seguente per eseguire l'esempio che pubblica un'immagine Docker su Amazon ECR. Per ulteriori informazioni su questo esempio, consulta. [Esempio di «Pubblica immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild](#sample-docker)

**Per eseguire questo esempio**

1. Se disponi già di un repository di immagini in Amazon ECR che desideri utilizzare, vai al passaggio 3. Altrimenti, se utilizzi un utente anziché un account AWS root o un utente amministratore per lavorare con Amazon ECR, aggiungi questa istruzione (tra *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) all'utente (o al gruppo IAM a cui è associato l'utente). L'utilizzo di un account AWS root non è consigliato. Questa istruzione consente la creazione di repository Amazon ECR per l'archiviazione di immagini Docker. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy. *Per ulteriori informazioni, consulta [Working with inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) using the in the user Guide. Console di gestione AWS* 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:CreateRepository"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa policy deve avere l'autorizzazione in IAM a modificare le policy.

1. Crea un archivio di immagini in Amazon ECR. Assicurati di creare il repository nella stessa AWS regione in cui crei l'ambiente di compilazione ed esegui la build. Per ulteriori informazioni, consulta [Creazione di un repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) nella *Amazon ECR User Guide.* Il nome di questo repository deve essere uguale a quello che viene specificato più avanti in questa procedura, rappresentato dalla variabile di ambiente `IMAGE_REPO_NAME`. Assicurati che la policy del repository Amazon ECR conceda l'accesso tramite push alle immagini per il tuo ruolo IAM di CodeBuild servizio. 

1. Aggiungi questa dichiarazione (tra *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* e*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) alla policy che hai allegato al tuo AWS CodeBuild ruolo di servizio. Questa dichiarazione consente di CodeBuild caricare immagini Docker negli archivi Amazon ECR. Le ellissi (`...`) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:CompleteLayerUpload",
                   "ecr:GetAuthorizationToken",
                   "ecr:InitiateLayerUpload",
                   "ecr:PutImage",
                   "ecr:UploadLayerPart"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Nota**  
L'entità IAM che modifica questa policy deve avere l'autorizzazione in IAM per modificare le policy.

1. Crea i file come descritto nelle [File](#sample-docker-files) sezioni [Struttura delle directory](#sample-docker-dir) e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. *Per ulteriori informazioni, consulta il [riferimento al file delle definizioni delle immagini](https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html) nella Guida per l'utente.AWS CodePipeline *
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

1. Crea un progetto di compilazione, esegui la build e visualizza le informazioni sulla build.

    Se utilizzi la console per creare il progetto:

   1.  In **Operating system** (Sistema operativo), seleziona **Ubuntu**. 

   1.  In **Runtime**, seleziona **Standard**. 

   1.  **Per **Image**, scegliere:5.0aws/codebuild/standard.** 

   1.  Aggiungere le seguenti variabili di ambiente: 
      +  AWS\$1DEFAULT\$1REGION con un valore di *region-ID* 
      +  AWS\$1ACCOUNT\$1ID con un valore di *account-ID* 
      +  IMAGE\$1TAG con un valore di Latest 
      +  IMAGE\$1REPO\$1NAME con un valore di *Amazon-ECR-repo-name* 

   Se si utilizza il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del comando potrebbe avere un aspetto simile a questo. `create-project` (Sostituire i segnaposto con i propri valori).

   ```
   {
     "name": "sample-docker-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL",
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ],
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Conferma di aver CodeBuild inviato correttamente l'immagine Docker al repository:

   1. Apri la console Amazon ECR all'indirizzo [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Selezionare il nome del repository L'immagine deve essere elencata nella colonna **Tag immagine**.

### Struttura delle directory
<a name="sample-docker-dir"></a>

Questo esempio assume la seguente struttura delle directory.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### File
<a name="sample-docker-files"></a>

Questo esempio utilizza i seguenti file.

`buildspec.yml` (in `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG      
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
```

`Dockerfile` (in `(root directory name)`)

```
FROM golang:1.12-alpine AS build
#Install git
RUN apk add --no-cache git
#Get the hello world package from a GitHub repository
RUN go get github.com/golang/example/hello
WORKDIR /go/src/github.com/golang/example/hello
# Build the project and send the output to /bin/HelloWorld 
RUN go build -o /bin/HelloWorld

FROM golang:1.12-alpine
#Copy the build's output binary from the previous build container
COPY --from=build /bin/HelloWorld /bin/HelloWorld
ENTRYPOINT ["/bin/HelloWorld"]
```

**Nota**  
CodeBuild sostituisce le immagini Docker `ENTRYPOINT` personalizzate.

# Adatta l'esempio «Pubblica immagine Docker su Amazon ECR' per inviarlo a Docker Hub
<a name="sample-docker-docker-hub"></a>

Per adattare l'esempio 'Publish Docker image to Amazon ECR' in modo che l'immagine Docker venga inviata a Docker Hub anziché ad Amazon ECR, modifica il codice dell'esempio. Per ulteriori informazioni sull'esempio, consulta e. [Esempio di «Pubblica immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild](sample-docker.md) [Esegui l'esempio «Pubblica immagine Docker su Amazon ECR'](sample-docker.md#sample-docker-running)
**Nota**  
Se si utilizza una versione di Docker precedente alla 17.06, rimuovere l'opzione `--no-include-email`.

1. Sostituisci queste righe di codice specifiche di Amazon ECRS nel `buildspec.yml` file:

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Amazon ECR...
         - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...          
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

   con queste righe di codice specifiche di Docker Hub:

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Docker Hub...
         # Type the command to log in to your Docker Hub account here.          
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

1. Carica il codice modificato in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. 
**Importante**  
Non caricare `(root directory name)`, ma solo i file all'interno di `(root directory name)`   
Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` al file ZIP, ma solo i file all'interno di `(root directory name)`

1. Sostituire queste righe di codice dall'input in formato JSON al comando `create-project`:

   ```
   ...
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

   con queste righe di codice:

   ```
   ...
       "environmentVariables": [
         {
           "name": "IMAGE_REPO_NAME",
           "value": "your-Docker-Hub-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

1. Crea un ambiente di compilazione, esegui la build e visualizza le informazioni relative alla build.

1. Conferma di AWS CodeBuild aver inviato correttamente l'immagine Docker al repository. Accedere a Docker Hub, andare nel repository e selezionare la scheda **Tags (Tag)**. Il tag `latest` dovrebbe contenere un valore di **Last Updated (Ultimo aggiornamento)** molto recente.

# Registro privato con Gestione dei segreti AWS esempio per CodeBuild
<a name="sample-private-registry"></a>

 Questo esempio mostra come utilizzare un'immagine Docker archiviata in un registro privato come ambiente AWS CodeBuild di runtime. Le credenziali del registro privato sono archiviate in Gestione dei segreti AWS. Qualsiasi registro privato funziona con CodeBuild. Questo esempio si basa su Docker Hub. 

**Nota**  
I segreti sono visibili alle azioni e non vengono mascherati quando vengono scritti su un file.

**Topics**
+ [

## Requisiti per un esempio di registro privato
](#sample-private-registry-requirements)
+ [

# Crea un CodeBuild progetto con un registro privato
](private-registry-sample-create-project.md)
+ [

# Configura una credenziale di registro privata per i corridori ospitati autonomamente
](private-registry-sample-configure-runners.md)

## Requisiti per un esempio di registro privato
<a name="sample-private-registry-requirements"></a>

 Per utilizzare un registro privato con AWS CodeBuild, è necessario disporre di quanto segue: 
+  Un segreto di Secrets Manager che memorizza le credenziali del Docker Hub. Le credenziali vengono utilizzate per accedere al repository privato. 
**Nota**  
Ti verranno addebitati i segreti che crei.
+  Un repository o un account privato. 
+  Una policy IAM relativa ai ruoli di CodeBuild servizio che concede l'accesso al segreto di Secrets Manager. 

 Segui questi passaggi per creare queste risorse e quindi creare un progetto di CodeBuild compilazione utilizzando le immagini Docker archiviate nel tuo registro privato. 

# Crea un CodeBuild progetto con un registro privato
<a name="private-registry-sample-create-project"></a>

1. Per informazioni su come creare un repository privato gratuito, consulta la pagina relativa ai [repository su Docker Hub](https://docs.docker.com/docker-hub/repos/). Puoi anche eseguire i seguenti comandi in un terminale per estrarre un'immagine, ottenerne l'ID e inserirla in un nuovo repository. 

   ```
   docker pull amazonlinux
   docker images amazonlinux --format {{.ID}}
   docker tag image-id your-username/repository-name:tag
   docker login
   docker push your-username/repository-name
   ```

1.  Segui la procedura descritta in [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida Gestione dei segreti AWS per l'utente*.

   

   1.  Nel passaggio 3, in **Scegli il tipo di segreto**, scegli **Altro tipo di segreto**. 

   1. Nelle **coppie chiave/valore**, crea una coppia chiave-valore per il nome utente di Docker Hub e una coppia chiave-valore per la password di Docker Hub. 

   1.  [Continua a seguire i passaggi descritti in Creare un segreto. Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) 

   1.  Nel passaggio 5, nella pagina **Configura rotazione automatica**, disattivala perché le chiavi corrispondono alle credenziali del tuo Docker Hub. 

   1.  Completa la procedura descritta in [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

    Per maggiori informazioni, consulta [Che cos’è Gestione dei segreti AWS?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 

1.  Quando crei un AWS CodeBuild progetto nella console, CodeBuild assegna l'autorizzazione richiesta. Se si utilizza una AWS KMS chiave diversa da`DefaultEncryptionKey`, è necessario aggiungerla al ruolo di servizio. Per ulteriori informazioni, consulta [Modificare un ruolo (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-managingrole-editing-console) nella *Guida per l'utente IAM*. 

    Affinché il ruolo di servizio funzioni con Secrets Manager, deve disporre almeno dell'`secretsmanager:GetSecretValue`autorizzazione.   
![\[La configurazione del ruolo di servizio.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  Per utilizzare la console per la creazione di un progetto in un ambiente archiviato in un registro privato, esegui la seguente procedura durante l'operazione. Per informazioni, consulta [Creare un progetto di compilazione (console)](create-project.md#create-project-console). 
**Nota**  
 Se il registro privato si trova nel tuo VPC, deve disporre di un accesso pubblico a Internet. CodeBuild non è possibile estrarre un'immagine da un indirizzo IP privato in un VPC. 

   1.  In **Immagine dell'ambiente**, scegli **Immagine personalizzata**. 

   1.  In **Environment type (Tipo ambiente)**, seleziona **Linux** o **Windows**. 

   1.  Per **Registro delle immagini**, scegli **Altro registro**. 

   1.  In **URL di registro esterno**, inserisci la posizione dell'immagine e in **Credenziali di registro (facoltativo)** inserisci l'ARN o il nome delle tue credenziali di Secrets Manager.
**Nota**  
 Se le credenziali non esistono nella regione corrente, devi utilizzare l'ARN. Non puoi utilizzare il nome delle credenziali se esistono in un'altra regione. 

# Configura una credenziale di registro privata per i corridori ospitati autonomamente
<a name="private-registry-sample-configure-runners"></a>

Usa le seguenti istruzioni per configurare una credenziale di registro per un runner ospitato autonomamente.

**Nota**  
Tieni presente che queste credenziali verranno utilizzate solo se le immagini vengono sostituite con quelle dei registri privati. 

------
#### [ AWS Management Console ]

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

1. Crea un progetto di compilazione o seleziona un progetto esistente. Per informazioni, consulta [Creare un progetto di compilazione (console)](create-project.md#create-project-console) e [Modifica delle impostazioni di un progetto di compilazione (console)](change-project.md#change-project-console).

1.  In **Ambiente**, scegli **Configurazione aggiuntiva**. 

1.  In **Configurazione aggiuntiva**, immettere il nome o l'ARN del codice segreto Gestione dei segreti AWS per la **credenziale del Registro** di sistema (facoltativo).  
![\[La configurazione delle credenziali del registro.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/registry-credential.png)

------
#### [ AWS CLI ]

1. Se desideri creare un nuovo progetto, esegui il comando **create-project**.

   ```
   aws codebuild create-project \
       --name project-name \
       --source type=source-type,location=source-location \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn},imagePullCredentialsType=CODEBUILD|SERVICE_ROLE" \
       --artifacts type=artifacts-type \
       --service-role arn:aws:iam::account-ID:role/service-role/service-role-name
   ```

1. Se desideri aggiornare un progetto esistente, esegui il comando **update-project**.

   ```
   aws codebuild update-project \
       --name project-name \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn}"
   ```

------

# Creazione di un sito Web statico con output di compilazione ospitato in un bucket S3
<a name="sample-disable-artifact-encryption"></a>

È possibile disabilitare la crittografia degli artefatti in una compilazione. Potresti volere eseguire questa operazione per pubblicare gli artefatti in una posizione configurata per l'hosting di un sito Web (non è possibile pubblicare artefatti crittografati). Questo esempio illustra come utilizzare webhook per attivare una compilazione e pubblicare i suoi artefatti in un bucket S3 configurato come sito Web. 

1.  Seguire le istruzioni nell'argomento relativo alla [configurazione di un sito Web statico](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html) per configurare un bucket S3 con funzione di sito Web. 

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione. I nomi dei progetti di compilazione devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1.  In **Source (Origine)**, per **Source provider (Fornitore origine)**, scegliere **GitHub**. Segui le istruzioni per connetterti (o riconnetterti) con GitHub, quindi scegli **Autorizza**. 

    Per **Webhook**, selezionare **Rebuild every time a code change is pushed to this repository (Ricompila ogni volta che viene inviata una modifica del codice a questo repository)**. È possibile selezionare questa casella solo se si sceglie **Use a repository in my account (Usa un repository nel mio account)**.   
![\[La configurazione del webhook.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/webhook.png)

1. In **Environment (Ambiente)**:

   Per **Environment image (Immagine ambiente)**, procedere in uno dei seguenti modi:
   + **Per utilizzare un'immagine Docker gestita da AWS CodeBuild, scegli **Immagine gestita**, quindi effettua le selezioni tra **Sistema operativo**, **Runtime (s)**, **Immagine e Versione dell'immagine**.** Se disponibile, eseguire una selezione da **Environment type (Tipo ambiente)**.
   + Per utilizzare un'altra immagine Docker, selezionare **Custom image (Immagine personalizzata)**. **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Se si sceglie **Other registry (Altro registro)**, fin **External registry URL (URL registro esterno)**, inserire il nome e il tag dell'immagine Docker in Docker Hub, utilizzando il formato `docker repository/docker image name`. Se scegli **Amazon ECR**, utilizza il **repository Amazon ECR e** l'immagine **Amazon ECR per scegliere l'immagine** Docker nel tuo account. AWS 
   + **Per utilizzare un'immagine Docker privata, scegli Immagine personalizzata.** **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Per **Image registry (Registro immagine)**, selezionare **Other registry (Altro registro)**, quindi immettere l'ARN delle credenziali per l'immagine Docker privata. Le credenziali devono essere create da Secrets Manager. Per ulteriori informazioni, consulta [Che cos'è Gestione dei segreti AWS?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) nella *Guida per l'utente di Gestione dei segreti AWS *.

1. In **Service role (Ruolo del servizio)**, procedere in uno dei seguenti modi:
   + Se non disponi di un ruolo CodeBuild di servizio, scegli **Nuovo ruolo di servizio**. In **Nome ruolo**, inserisci un nome per il nuovo ruolo.
   + Se hai un ruolo CodeBuild di servizio, scegli **Ruolo di servizio esistente**. In **Role ARN, scegli il ruolo** di servizio.
**Nota**  
Quando utilizzi la console per creare o aggiornare un progetto di build, puoi creare contemporaneamente un ruolo di CodeBuild servizio. Per impostazione predefinita, il ruolo funziona solo con tale progetto di compilazione. Se si utilizza la console per associare questo ruolo del servizio con un altro progetto di compilazione, il ruolo viene aggiornato per funzionare con l'altro progetto. Un ruolo del servizio può funzionare con un massimo di 10 progetti di compilazione.

1. In **Buildspec**, esegui una delle seguenti operazioni:
   + Scegliete **Usa un file buildspec per usare il file** buildspec.yml nella directory principale del codice sorgente.
   + Scegli **Inserisci comandi di compilazione per utilizzare la console per inserire i comandi di compilazione**.

   Per ulteriori informazioni, consulta [Riferimento per buildspec](build-spec-ref.md).

1.  In **Artifacts**, per **Type**, scegli **Amazon S3** per archiviare l'output della build in un bucket S3. 

1.  Per **Bucket name (Nome del bucket)**, selezionare il nome del bucket S3 precedentemente configurato come sito Web nella fase 1. 

1.  Se si sceglie **Insert build commands (Inserisci comandi di compilazione)** in **Environment (Ambiente)**, allora per **Output files (File di output)** immettere i percorsi dei file della compilazione che si desidera inserire nel bucket di output. Se si dispone di più di un percorso, utilizzare una virgola per separare ogni percorso (ad esempio **appspec.yml, target/my-app.jar**). Per ulteriori informazioni, consulta [Artifacts reference-key in the buildspec file](build-spec-ref.md#artifacts-build-spec).

1.  Selezionare **Disable artifacts encryption (Disabilita crittografia artefatti)**. 

1. Espandere **Additional configuration (Configurazione aggiuntiva)** e scegliere le opzioni come opportuno.

1. Scegliere **Create build project (Crea progetto di compilazione)**. Nella pagina del progetto di compilazione, nella sezione **Build history (Cronologia compilazione)**, selezionare **Start build (Avvia la compilazione)** per eseguire la compilazione.

1.  (Facoltativo) Segui le istruzioni riportate in [Esempio: velocizza il tuo sito Web con Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-cloudfront-walkthrough.html) S3 CloudFront nella *Amazon S3 Developer Guide*. 

# Diverse origini di input ed esempi di artefatti di output
<a name="sample-multi-in-out"></a>

È possibile creare un progetto di AWS CodeBuild compilazione con più di una sorgente di input e più di un set di artefatti di output. Questo esempio illustra come configurare un progetto di compilazione che: 
+ Utilizza più origini e repository di tipi diversi.
+ Pubblica artefatti di compilazione in più bucket S3 in un'unica compilazione.

 Nell'esempio seguente, create un progetto di compilazione e lo utilizzate per eseguire una build. L'esempio utilizza il file buildspec del progetto di compilazione per dimostrare come integrare diverse origini e creare più di un set di artefatti. 

Per informazioni su come creare una pipeline che utilizza più input di origine per creare più CodeBuild artefatti di output, consulta. [Esempio di CodePipeline/CodeBuild integrazione con più sorgenti di input e artefatti di output](sample-codepipeline.md#sample-pipeline-multi-input-output)

**Topics**
+ [

# Crea un progetto di compilazione con più input e output
](sample-multi-in-out-create.md)
+ [

# Crea un progetto di compilazione senza una fonte
](no-source.md)

# Crea un progetto di compilazione con più input e output
<a name="sample-multi-in-out-create"></a>

Utilizzate la procedura seguente per creare un progetto di compilazione con più input e output.

**Per creare un progetto di compilazione con più input e output**

1.  Carica le tue fonti in uno o più bucket S3, CodeCommit GitHub, GitHub Enterprise Server o Bitbucket. 

1.  Scegli quale origine è quella principale. Questa è la fonte in cui CodeBuild cerca ed esegue il file buildspec. 

1.  Creare un progetto di compilazione. Per ulteriori informazioni, consulta [Crea un progetto di compilazione in AWS CodeBuild](create-project.md). 

1.  Crea il tuo progetto di build, esegui la build e ottieni informazioni sulla build. 

1.  Se usi il AWS CLI per creare il progetto di compilazione, l'input in formato JSON del `create-project` comando potrebbe essere simile al seguente: 

   ```
   {
     "name": "sample-project",
     "source": {
       "type": "S3",
       "location": "<bucket/sample.zip>"
     },
     "secondarySources": [
       {
         "type": "CODECOMMIT",
         "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo",
         "sourceIdentifier": "source1"
       },
       {
         "type": "GITHUB",
         "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin",
         "sourceIdentifier": "source2"
       }
     ],
     "secondaryArtifacts": [ss
       {
         "type": "S3",
         "location": "<output-bucket>",
         "artifactIdentifier": "artifact1"
       },
       {
         "type": "S3",
         "location": "<other-output-bucket>",
         "artifactIdentifier": "artifact2"
       }
     ],
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

 L'origine primaria viene definita dall'attributo `source`. Tutte le altre origini sono chiamate origini secondarie e appaiono sotto `secondarySources`. Tutte le origini secondarie sono installate nella propria directory. Tale directory è archiviata nella variabile di ambiente integrata `CODEBUILD_SRC_DIR_sourceIdentifer`. Per ulteriori informazioni, consulta [Variabili di ambiente degli ambienti di compilazione](build-env-ref-env-vars.md). 

 L'attributo `secondaryArtifacts` contiene un elenco di definizioni di artefatti. Tali artefatti utilizzano il blocco `secondary-artifacts` del file buildspec presente all'interno del blocco `artifacts`. 

 Gli artefatti secondari nel file buildspec hanno la stessa struttura degli artefatti e sono separati dall'identificatore degli artefatti. 

**Nota**  
 Nell'[API CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/APIReference/), `artifactIdentifier` nell'artefatto secondario è un attributo richiesto in `CreateProject` e `UpdateProject`. Deve essere utilizzato per fare riferimento a un secondo artefatto. 

 Se si utilizza l'input precedente in formato JSON, il file buildspec del progetto potrebbe risultare simile a questo: 

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk11
  build:
    commands:
      - cd $CODEBUILD_SRC_DIR_source1
      - touch file1
      - cd $CODEBUILD_SRC_DIR_source2
      - touch file2

artifacts:
  files:
    - '**.*'
  secondary-artifacts:
    artifact1:
      base-directory: $CODEBUILD_SRC_DIR_source1
      files:
        - file1
    artifact2:
      base-directory: $CODEBUILD_SRC_DIR_source2
      files:
        - file2
```

 Puoi sovrascrivere la versione dell'origine primaria utilizzando l'API con l'attributo `sourceVersion` in `StartBuild`. Per sovrascrivere una o più versioni sorgente secondarie, utilizzare l'attributo `secondarySourceVersionOverride`. 

 L'input in formato JSON per il comando in potrebbe essere simile a: `start-build` AWS CLI 

```
{
   "projectName": "sample-project",
   "secondarySourcesVersionOverride": [
      {
        "sourceIdentifier": "source1",
        "sourceVersion": "codecommit-branch"
      },
      {
        "sourceIdentifier": "source2",
        "sourceVersion": "github-branch"
      },
   ]
}
```

# Crea un progetto di compilazione senza una fonte
<a name="no-source"></a>

 Puoi configurare un CodeBuild progetto scegliendo il tipo di **NO\$1SOURCE** sorgente quando configuri la tua fonte. Quando il tipo di origine è **NO\$1SOURCE**, non puoi specificare un file buildspec perché il progetto non possiede un'origine. Al contrario, devi specificare una stringa buildspec in formato YAML nell'attributo `buildspec` dell'input in formato JSON nel comando dell'interfaccia a riga di comando `create-project`. Potrebbe essere simile a quanto segue: 

```
{
  "name": "project-name",
  "source": {
    "type": "NO_SOURCE",
    "buildspec": "version: 0.2\n\nphases:\n  build:\n    commands:\n      - command"
   },
  "environment": {
    "type": "LINUX_CONTAINER",
    "image": "aws/codebuild/standard:5.0",
    "computeType": "BUILD_GENERAL1_SMALL",    
  },
  "serviceRole": "arn:aws:iam::account-ID:role/role-name",
  "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
}
```

Per ulteriori informazioni, consulta [Creazione di un progetto di compilazione (AWS CLI)](create-project.md#create-project-cli).

# Versioni di runtime nell'esempio di file buildspec per CodeBuild
<a name="sample-runtime-versions"></a>

Se usi l'immagine standard di Amazon Linux 2 (AL2) versione 1.0 o successiva o l'immagine standard di Ubuntu versione 2.0 o successiva, puoi specificare uno o più runtime nella `runtime-versions` sezione del tuo file buildspec. Gli esempi seguenti mostrano come modificare il runtime del progetto, specificare più di un runtime e specificare un runtime che dipende da un altro runtime. Per informazioni sui runtime supportati, vedi [Immagini Docker fornite da CodeBuild](build-env-ref-available.md).

**Nota**  
Se utilizzi Docker nel container di compilazione, la compilazione deve essere eseguita in modalità con privilegi. Per ulteriori informazioni, consultare [Esegui AWS CodeBuild le build manualmente](run-build.md) e [Crea un progetto di compilazione in AWS CodeBuild](create-project.md). 

**Topics**
+ [

# Aggiorna la versione di runtime nel file buildspec
](sample-runtime-update-version.md)
+ [

# Specifica di due runtime
](sample-runtime-two-major-version-runtimes.md)

# Aggiorna la versione di runtime nel file buildspec
<a name="sample-runtime-update-version"></a>

Puoi modificare il runtime utilizzato dal tuo progetto con una nuova versione aggiornando la `runtime-versions` sezione del tuo file buildspec. I seguenti esempi mostrano come specificare le versioni 8 e 11 di Java:
+ Una sezione `runtime-versions` che specifica la versione 8 di Java:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto8
  ```
+ Una sezione `runtime-versions` che specifica la versione 11 di Java:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto11
  ```

I seguenti esempi mostrano come specificare diverse versioni di Python usando l'immagine standard di Ubuntu 5.0 o l'immagine standard di Amazon Linux 2 3.0:
+ Una `runtime-versions` sezione che specifica la versione 3.7 di Python: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.7
  ```
+ Una `runtime-versions` sezione che specifica la versione 3.8 di Python: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.8
  ```

Questo esempio illustra un progetto che inizia con il runtime Java versione 8 e viene aggiornato al runtime Java versione 10. 

1. Scaricare e installare Maven. Per informazioni, consultare le pagine del sito Web di Apache Maven relative al [download di Apache Maven](https://maven.apache.org/download.cgi) e all'[installazione di Apache Maven](https://maven.apache.org/install.html).

1. Passare a una directory vuota sull'istanza o sul computer locale, quindi eseguire il comando Maven.

   ```
   mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=ROOT" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"
   ```

   Se il comando è eseguito correttamente, vengono creati la struttura e i file della directory.

   ```
   .
   └── ROOT
       ├── pom.xml
       └── src
           └── main
               ├── resources
               └── webapp
                   ├── WEB-INF
                   │   └── web.xml
                   └── index.jsp
   ```

1. Crea un file denominato `buildspec.yml` con i seguenti contenuti. Archivia il file nella directory ` (root directory name)/my-web-app`. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         java: corretto8
     build:
       commands:
         - java -version
         - mvn package
   artifacts:
     files:
       - '**/*'
     base-directory: 'target/my-web-app'
   ```

   Nel file buildspec: 
   + La sezione `runtime-versions` specifica che il progetto utilizza la versione 8 del runtime Java . 
   + Il comando `- java -version` visualizza la versione di Java utilizzata dal progetto al momento della compilazione. 

   La struttura del file dovrebbe avere il seguente aspetto. 

   ```
   (root directory name)
   └── my-web-app
       ├── src
       │   ├── main
       │   ├── resources
       │   └── webapp
       │       └── WEB-INF
       │           └── web.xml
       │               └── index.jsp
       ├── buildspec.yml
       └── pom.xml
   ```

1. Carica il contenuto della `my-web-app` directory in un bucket di input S3 o in un repository CodeCommit, GitHub o Bitbucket. 
**Importante**  
Non caricare `(root directory name)` o `(root directory name)/my-web-app`, ma solo le directory e i file all'interno di `(root directory name)/my-web-app`.   
Se si sta usando un bucket di input S3, assicurarsi di creare un file ZIP che contenga la struttura e i file della directory, quindi caricarlo nel bucket di input. Non aggiungere `(root directory name)` o `(root directory name)/my-web-app` al file ZIP, ma solo le directory e i file all'interno di `(root directory name)/my-web-app`.

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

1. Creare un progetto di compilazione. Per ulteriori informazioni, consultare [Creare un progetto di compilazione (console)](create-project.md#create-project-console) e [Esecuzione di una compilazione (console)](run-build-console.md). Lasciare tutte le impostazioni sui valori predefiniti, ad eccezione delle seguenti.
   + In **Environment (Ambiente)**:
     + Per **Environment image (Immagine ambiente)**, scegliere **Managed image (Immagine gestita)**.
     + Per **Operating system (Sistema operativo)**, scegliere **Amazon Linux 2**. 
     +  In **Runtime(s) (Runtime)**, seleziona **Standard**. 
     + **Per **Image**, scegli -x86\$164-standard:4.0. aws/codebuild/amazonlinux**

1. Selezionare **Start build (Avvia compilazione)**. 

1. In **Build configuration (Configurazione della compilazione)** accettare le impostazioni predefinite, quindi scegliere **Build configuration (Avvia compilazione)**. 

1. Al termine della compilazione, visualizzare l’output della compilazione nella scheda **Build logs (Log di compilazione)**. Verrà visualizzato un output simile al seguente: 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto8' based on manual selections...
   [Container] Date Time Running command echo "Installing Java version 8 ..."
   Installing Java version 8 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_8_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_8_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_8_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_8_HOME"/bin/* "$JRE_8_HOME"/bin/*;
   ```

1. Aggiorna la sezione `runtime-versions` con Java versione 11: 

   ```
   install:
       runtime-versions:
         java: corretto11
   ```

1. Dopo aver salvato la modifica, esegui nuovamente la compilazione e visualizza l’output di compilazione. La versione di Java installata visualizzata è 11. Verrà visualizzato un output simile al seguente: 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto11' based on manual selections... 
   Installing Java version 11 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_11_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_11_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_11_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_11_HOME"/bin/* "$JRE_11_HOME"/bin/*;
   ```

# Specifica di due runtime
<a name="sample-runtime-two-major-version-runtimes"></a>

È possibile specificare più di un runtime nello stesso progetto di build. CodeBuild Questo progetto di esempio utilizza due file di origine: uno che utilizza il comando Vai a runtime e uno che utilizza il runtime Node.js. 

1. Crea una directory denominata `my-source`. 

1. Nella directory `my-source`, crea una directory denominata `golang-app`. 

1. Crea un file denominato `hello.go` con i seguenti contenuti. Archivia il file nella directory `golang-app`. 

   ```
   package main
   import "fmt"
   
   func main() {
     fmt.Println("hello world from golang")
     fmt.Println("1+1 =", 1+1)
     fmt.Println("7.0/3.0 =", 7.0/3.0)
     fmt.Println(true && false)
     fmt.Println(true || false)
     fmt.Println(!true)
     fmt.Println("good bye from golang")
   }
   ```

1. Nella directory `my-source`, crea una directory denominata `nodejs-app`. che deve trovarsi allo stesso livello della directory `golang-app`. 

1. Crea un file denominato `index.js` con i seguenti contenuti. Archivia il file nella directory `nodejs-app`. 

   ```
   console.log("hello world from nodejs");
   console.log("1+1 =" + (1+1));
   console.log("7.0/3.0 =" + 7.0/3.0);
   console.log(true && false);
   console.log(true || false);
   console.log(!true);
   console.log("good bye from nodejs");
   ```

1. Crea un file denominato `package.json` con i seguenti contenuti. Archivia il file nella directory `nodejs-app`. 

   ```
   {
     "name": "mycompany-app",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo \"run some tests here\""
     },
     "author": "",
     "license": "ISC"
   }
   ```

1. Crea un file denominato `buildspec.yml` con i seguenti contenuti. Archivia il file nella `my-source` directory, allo stesso livello delle directory `nodejs-app` e `golang-app`. La `runtime-versions` sezione specifica i runtime di Node.js versione 12 e Go versione 1.13. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         golang: 1.13
         nodejs: 12
     build:
       commands:
         - echo Building the Go code...
         - cd $CODEBUILD_SRC_DIR/golang-app
         - go build hello.go 
         - echo Building the Node code...
         - cd $CODEBUILD_SRC_DIR/nodejs-app
         - npm run test
   artifacts:
     secondary-artifacts:
       golang_artifacts:
         base-directory: golang-app
         files:
           - hello
       nodejs_artifacts:
         base-directory: nodejs-app
         files:
           - index.js
           - package.json
   ```

1. La struttura del file dovrebbe avere il seguente aspetto. 

   ```
   my-source
   ├── golang-app
   │   └── hello.go
   ├── nodejs.app
   │   ├── index.js
   │   └── package.json
   └── buildspec.yml
   ```

1. Carica il contenuto della `my-source` directory in un bucket di input S3 o in un repository CodeCommit, GitHub o Bitbucket.
**Importante**  
 Se si sta usando un bucket di input S3, assicurarsi di creare un file ZIP che contenga la struttura e i file della directory, quindi caricarlo nel bucket di input. Non aggiungere `my-source` al file ZIP, ma solo le directory e i file all'interno di `my-source`.

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

1. Creare un progetto di compilazione. Per ulteriori informazioni, consultare [Creare un progetto di compilazione (console)](create-project.md#create-project-console) e [Esecuzione di una compilazione (console)](run-build-console.md). Lasciare tutte le impostazioni sui valori predefiniti, ad eccezione delle seguenti.
   + In **Environment (Ambiente)**:
     + Per **Environment image (Immagine ambiente)**, scegliere **Managed image (Immagine gestita)**.
     + Per **Operating system (Sistema operativo)**, scegliere **Amazon Linux 2**.
     + In **Runtime(s) (Runtime)**, seleziona **Standard**.
     + **Per **Image**, scegli -x86\$164-standard:4.0. aws/codebuild/amazonlinux**

1. Scegliere **Create build project (Crea progetto di compilazione)**. 

1. Selezionare **Start build (Avvia compilazione)**. 

1. In **Build configuration (Configurazione della compilazione)** accettare le impostazioni predefinite, quindi scegliere **Build configuration (Avvia compilazione)**. 

1. Al termine della compilazione, visualizzare l’output della compilazione nella scheda **Build logs (Log di compilazione)**. Verrà visualizzato un output simile al seguente. che mostra l’output dei runtime Go e Node.js. Inoltre, mostra l'output alle applicazioni Go e Node.js. 

   ```
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'golang' runtime version '1.13' based on manual selections...
   [Container] Date Time Selecting 'nodejs' runtime version '12' based on manual selections...
   [Container] Date Time Running command echo "Installing Go version 1.13 ..."
   Installing Go version 1.13 ... 
    
   [Container] Date Time Running command echo "Installing Node.js version 12 ..." 
   Installing Node.js version 12 ... 
    
   [Container] Date Time Running command n $NODE_12_VERSION
      installed : v12.20.1 (with npm 6.14.10)
   
   [Container] Date Time Moving to directory /codebuild/output/src819694850/src
   [Container] Date Time Registering with agent
   [Container] Date Time Phases found in YAML: 2
   [Container] Date Time  INSTALL: 0 commands
   [Container] Date Time  BUILD: 1 commands
   [Container] Date Time Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:
   [Container] Date Time Entering phase INSTALL
   [Container] Date Time Phase complete: INSTALL State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase PRE_BUILD 
   [Container] Date Time Phase complete: PRE_BUILD State: SUCCEEDED 
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase BUILD 
   [Container] Date Time Running command echo Building the Go code... 
   Building the Go code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/golang-app 
    
   [Container] Date Time Running command go build hello.go 
    
   [Container] Date Time Running command echo Building the Node code... 
   Building the Node code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/nodejs-app 
    
   [Container] Date Time Running command npm run test 
    
   > mycompany-app@1.0.0 test /codebuild/output/src924084119/src/nodejs-app 
   > echo "run some tests here" 
    
   run some tests here
   ```

# Esempio di versione sorgente con AWS CodeBuild
<a name="sample-source-version"></a>

 In questo esempio viene illustrato come specificare una versione dell'origine utilizzando un formato diverso da un ID commit (detto anche SHA commit). Puoi specificare la versione dell'origine nei seguenti modi: 
+  Per un provider di sorgenti Amazon S3, utilizza l'ID di versione dell'oggetto che rappresenta il file ZIP di input della build. 
+  Per CodeCommit Bitbucket ed GitHub Enterprise Server, utilizza uno dei seguenti: GitHub 
  +  Richiesta pull come riferimento alla richiesta pull (ad esempio `refs/pull/1/head`). 
  +  Branch come nome di filiale. 
  +  ID del commit. 
  +  Etichetta. 
  +  Riferimento e ID di commit. Il riferimento può essere uno dei seguenti:
    +  Un tag (ad esempio `refs/tags/mytagv1.0^{full-commit-SHA}`). 
    +  Un ramo (ad esempio `refs/heads/mydevbranch^{full-commit-SHA}`). 
    +  Una richiesta pull (ad esempio `refs/pull/1/head^{full-commit-SHA}`). 
+  Per GitLab e GitLab Self Managed, utilizza uno dei seguenti: 
  +  Branch come nome del ramo. 
  +  ID del commit. 
  +  Etichetta. 

**Nota**  
 È possibile specificare la versione di una sorgente di pull request solo se il repository è GitHub o GitHub Enterprise Server. 

 Se utilizzi un riferimento e un ID commit per specificare una versione, la fase `DOWNLOAD_SOURCE` della compilazione dura meno è più rapida di quando fornisci solo la versione. Questo perché quando si aggiunge un riferimento, CodeBuild non è necessario scaricare l'intero repository per trovare il commit. 
+ È possibile specificare una versione di origine con solo un ID commit, ad esempio `12345678901234567890123467890123456789`. Se lo fai, CodeBuild devi scaricare l'intero repository per trovare la versione.
+ È possibile specificare una versione di origine con un riferimento e un ID commit in questo formato: `refs/heads/branchname^{full-commit-SHA}` (ad esempio `refs/heads/main^{12345678901234567890123467890123456789}`). Se lo fai, CodeBuild scarica solo il ramo specificato per trovare la versione.

**Nota**  
Per velocizzare la `DOWNLOAD_SOURCE` fase di compilazione, puoi anche impostare la **profondità del clone di Git** su un numero basso. CodeBuild scarica un numero inferiore di versioni del tuo repository.

**Topics**
+ [

# Specificate una versione GitHub del repository con un ID di commit
](sample-source-version-github.md)
+ [

# Specificate una versione del repository con un riferimento e un ID di commit GitHub
](sample-source-version-github-ref.md)

# Specificate una versione GitHub del repository con un ID di commit
<a name="sample-source-version-github"></a>

È possibile specificare una versione di origine con solo un ID commit, ad esempio `12345678901234567890123467890123456789`. Se si esegue questa operazione, è CodeBuild necessario scaricare l'intero repository per trovare la versione.

**Per specificare una versione del GitHub repository con un ID di commit**

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). Lasciare tutte le impostazioni sui valori predefiniti, ad eccezione delle seguenti:
   +  In **Source (Origine)**: 
     +  Per **Source provider**, scegli. **GitHub** Se non sei connesso a GitHub, segui le istruzioni per connetterti. 
     +  In **Repository**, scegliere **Public repository (Repository pubblico)**. 
     +  Nel campo **Repository URL (URL repository)**, inserire **https://github.com/aws/aws-sdk-ruby.git** 
   + In **Environment (Ambiente)**:
     + Per **Environment image (Immagine ambiente)**, scegliere **Managed image (Immagine gestita)**.
     + Per **Operating system (Sistema operativo)**, scegliere **Amazon Linux 2**.
     + In **Runtime(s) (Runtime)**, seleziona **Standard**.
     + Per **Image**, scegliete **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1.  Per **Build specifications (Specifiche di compilazione)**, scegliere **Insert build commands (Inserisci comandi di compilazione)** e selezionare **Switch to editor (Passa a editor)**. 

1.  Per **Build commands (Comandi di compilazione)**, sostituire il testo segnaposto con il seguente: 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         ruby: 2.6
     build:
       commands:
          - echo $CODEBUILD_RESOLVED_SOURCE_VERSION
   ```

    La sezione `runtime-versions` è obbligatoria quando si utilizza l'immagine standard di Ubuntu 2.0. Qui viene specifficata la versione 2.6 del runtime di Ruby, ma si può utilizzare qualunque runtime. Il comando `echo` visualizza la versione del codice sorgente archiviato nella variabile di ambiente `CODEBUILD_RESOLVED_SOURCE_VERSION`. 

1.  In **Build configuration (Configurazione della compilazione)** accettare le impostazioni predefinite, quindi scegliere **Build configuration (Avvia compilazione)**. 

1.  Per **Source version (Versione origine)**, inserire **046e8b67481d53bdc86c3f6affdd5d1afae6d369**. Questo è il SHA di un commit nel repository `https://github.com/aws/aws-sdk-ruby.git`. 

1.  Selezionare **Start build (Avvia compilazione)**. 

1.  Una volta completata la compilazione, si dovrebbe visualizzare quanto segue: 
   +  Nella scheda **Build logs (Log di compilazione)**, la versione dell'origine del progetto che è stata utilizzata. Ecco un esempio.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Nella scheda **Environment variables (Variabili di ambiente)**, **Resolved source version (Versione di origine risolta** corrisponde all'ID commit utilizzato per creare la compilazione. 
   +  Nella scheda **Phase details (Dettagli di fase)**, la durata della fase `DOWNLOAD_SOURCE`. 

# Specificate una versione del repository con un riferimento e un ID di commit GitHub
<a name="sample-source-version-github-ref"></a>

È possibile specificare una versione di origine con un riferimento e un ID commit in questo formato: `refs/heads/branchname^{full-commit-SHA}` (ad esempio `refs/heads/main^{12345678901234567890123467890123456789}`). In tal caso, CodeBuild scarica solo il ramo specificato per trovare la versione.

**Per specificare una versione del GitHub repository con un riferimento e un ID di commit.**

1. Completa le fasi descritte in [Specificate una versione GitHub del repository con un ID di commit](sample-source-version-github.md).

1.  Dal riquadro di navigazione a sinistra, scegliere **Build projects (Progetti di compilazione)** e selezionare il progetto creato in precedenza. 

1.  Selezionare **Start build (Avvia compilazione)**. 

1.  In **Source version (Versione di origine)**, inserire **refs/heads/main^\$1046e8b67481d53bdc86c3f6affdd5d1afae6d369\$1**. Questo è lo stesso ID commit e un riferimento a un ramo nel formato `refs/heads/branchname^{full-commit-SHA}`. 

1.  Selezionare **Start build (Avvia compilazione)**. 

1. Una volta completata la compilazione, si dovrebbe visualizzare quanto segue: 
   +  Nella scheda **Build logs (Log di compilazione)**, la versione dell'origine del progetto che è stata utilizzata. Ecco un esempio.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Nella scheda **Environment variables (Variabili di ambiente)**, **Resolved source version (Versione di origine risolta** corrisponde all'ID commit utilizzato per creare la compilazione. 
   +  Nella scheda **Phase details (Dettagli di fase)**, la durata della fase `DOWNLOAD_SOURCE` deve essere più breve di quella in cui si è utilizzato solo l'ID commit per specificare la versione dell'origine.

# Esempi di repository di sorgenti di terze parti per CodeBuild
<a name="sample-third-party-source"></a>

Questa sezione descrive esempi di integrazioni tra repository di sorgenti di terze parti e. CodeBuild


| Project N.E.M.O. | Description | 
| --- | --- | 
|  BitBucket pull request e esempio di filtro webhook: vedi [Esegui l'esempio «Bitbucket pull request and webhook filter» per CodeBuild](sample-bitbucket-pull-request.md)  |  Questo esempio mostra come creare una richiesta pull tramite un repository Bitbucket. Mostra anche come utilizzare un webhook Bitbucket per attivare CodeBuild per creare una compilazione di un progetto.  | 
|  GitHub Esempio di Enterprise Server: vedi [Esegui l'esempio di GitHub Enterprise Server per CodeBuild](sample-github-enterprise.md)  |  Questo esempio mostra come configurare i CodeBuild progetti quando nel repository di GitHub Enterprise Server è installato un certificato. Mostra anche come abilitare i webhook in modo da CodeBuild ricostruire il codice sorgente ogni volta che una modifica al codice viene inserita nell'archivio di Enterprise Server. GitHub   | 
|  GitHub pull request e esempio di filtro webhook: vedi [Esegui l'esempio di GitHub pull request e di filtro webhook per CodeBuild](sample-github-pull-request.md)  |  Questo esempio mostra come creare una richiesta pull utilizzando un repository di GitHub Enterprise Server. Viene inoltre illustrato come abilitare i webhook in modo da CodeBuild ricostruire il codice sorgente ogni volta che una modifica al codice viene inserita nell'archivio di Enterprise Server. GitHub   | 

# Esegui l'esempio «Bitbucket pull request and webhook filter» per CodeBuild
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild supporta i webhook quando il repository di origine è Bitbucket. Ciò significa che per un progetto di CodeBuild compilazione il cui codice sorgente è archiviato in un repository Bitbucket, i webhook possono essere utilizzati per ricostruire il codice sorgente ogni volta che viene inserita una modifica al codice nell'archivio. Per ulteriori informazioni, consulta [Eventi webhook Bitbucket](bitbucket-webhook.md). 

Questo esempio mostra come creare una richiesta pull tramite un repository Bitbucket. Inoltre, mostra come utilizzare un webhook Bitbucket per attivare la creazione di una build di un progetto. CodeBuild 

**Nota**  
Quando si utilizzano i webhook, è possibile che un utente attivi una build inaspettata. Per mitigare questo rischio, consulta. [Procedure consigliate per l'utilizzo dei webhook](webhooks.md#webhook-best-practices)

**Topics**
+ [

## Prerequisiti
](#sample-bitbucket-pull-request-prerequisites)
+ [

## Passaggio 1: crea un progetto di compilazione con Bitbucket e abilita i webhook
](#sample-bitbucket-pull-request-create)
+ [

## Passaggio 2: attiva una build con un webhook Bitbucket
](#sample-bitbucket-pull-request-trigger)

## Prerequisiti
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 Per eseguire questo esempio devi connettere il tuo AWS CodeBuild progetto al tuo account Bitbucket. 

**Nota**  
 CodeBuild ha aggiornato le sue autorizzazioni con Bitbucket. Se in precedenza hai collegato il tuo progetto a Bitbucket e ora ricevi un errore di connessione Bitbucket, devi riconnetterti per concedere l'autorizzazione a gestire i tuoi webhook. CodeBuild 

## Passaggio 1: crea un progetto di compilazione con Bitbucket e abilita i webhook
<a name="sample-bitbucket-pull-request-create"></a>

 I passaggi seguenti descrivono come creare un AWS CodeBuild progetto con Bitbucket come repository di origine e abilitare i webhook. 

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. Scegliere **Create build project (Crea progetto di compilazione)**. 

1. In **Project configuration (Configuratore progetto)**:  
**Project name** (Nome progetto)  
Inserisci un nome per questo progetto di compilazione. I nomi dei progetti di build devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1. In **Source (Origine)**:  
**Fornitore di origine**  
Scegli **Bitbucket**. **Segui le istruzioni per connetterti (o riconnetterti) con Bitbucket, quindi scegli Autorizza.**  
**Repository**  
Scegli **Repository nel mio account Bitbucket.**  
**Se non ti sei mai connesso in precedenza al tuo account Bitbucket, inserisci il nome utente e la password dell'app Bitbucket e seleziona Salva credenziali Bitbucket.**  
**Repository Bitbucket**  
Inserisci l'URL del tuo repository Bitbucket.

1. In **Primary source webhook events**, seleziona quanto segue. 
**Nota**  
La sezione **Primary source webhook events** è visibile solo se hai scelto **Repository nel mio account Bitbucket** nel passaggio precedente.

   1. Al momento della creazione di un progetto, selezionare **Rebuild every time a code change is pushed to this repository (Ricompila ogni volta che viene inviata una modifica del codice a questo repository)**. 

   1. Da **Event type (Tipo di evento)**, selezionare uno o più eventi. 

   1. Per applicare un filtro che stabilisce quando un evento avvia una compilazione, in **Start a build under these conditions (Avvia una compilazione in queste condizioni)** aggiungere uno o più filtri facoltativi. 

   1. Per applicare un filtro che stabilisce quando un evento non avvia una compilazione, in **Don't start a build under these conditions (Non avviare una compilazione in queste condizioni)** aggiungere uno o più filtri facoltativi. 

   1. Scegli **Aggiungi gruppo di filtri per aggiungere un altro gruppo** di filtri, se necessario. 

   Per ulteriori informazioni sui tipi di eventi e sui filtri del webhook di Bitbucket, consulta. [Eventi webhook Bitbucket](bitbucket-webhook.md)

1. In **Environment (Ambiente)**:  
**Immagine dell'ambiente**  
Seleziona una delle seguenti opzioni:    
Per utilizzare un'immagine Docker gestita da AWS CodeBuild:  
Scegli **Immagine gestita**, quindi effettua le selezioni tra **Sistema operativo**, **Runtime (s)**, **Immagine e Versione dell'****immagine**. Se disponibile, eseguire una selezione da **Environment type (Tipo ambiente)**.  
Per usare un'altra immagine Docker:  
Scegli **Immagine personalizzata**. Per il **tipo di ambiente**, scegli **ARM**, **Linux****, Linux GPU** o **Windows**. Se si sceglie **Other registry (Altro registro)**, fin **External registry URL (URL registro esterno)**, inserire il nome e il tag dell'immagine Docker in Docker Hub, utilizzando il formato `docker repository/docker image name`. Se scegli **Amazon ECR**, utilizza il **repository Amazon ECR e** l'immagine **Amazon ECR per scegliere l'immagine** Docker nel tuo account. AWS   
Per utilizzare un'immagine Docker privata:  
Scegli **Immagine personalizzata**. Per il **tipo di ambiente**, scegli **ARM**, **Linux****, Linux GPU** o **Windows**. Per **Image registry (Registro immagine)**, selezionare **Other registry (Altro registro)**, quindi immettere l'ARN delle credenziali per l'immagine Docker privata. Le credenziali devono essere create da Secrets Manager. Per ulteriori informazioni, consulta [What](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) Is? Gestione dei segreti AWS nella *Guida Gestione dei segreti AWS per l'utente*.  
**Ruolo di servizio**  
Seleziona una delle seguenti opzioni:  
   + Se non disponi di un ruolo CodeBuild di servizio, scegli **Nuovo ruolo di servizio**. In **Nome ruolo**, inserisci un nome per il nuovo ruolo.
   + Se hai un ruolo CodeBuild di servizio, scegli **Ruolo di servizio esistente**. In **Role ARN, scegli il ruolo** di servizio.
Quando utilizzi la console per creare o aggiornare un progetto di build, puoi creare contemporaneamente un ruolo di CodeBuild servizio. Per impostazione predefinita, il ruolo funziona solo con tale progetto di compilazione. Se si utilizza la console per associare questo ruolo del servizio con un altro progetto di compilazione, il ruolo viene aggiornato per funzionare con l'altro progetto. Un ruolo del servizio può funzionare con un massimo di 10 progetti di compilazione.

1. In **Buildspec**, esegui una delle seguenti operazioni:
   + Scegliete **Usa un file buildspec per usare il file** buildspec.yml nella directory principale del codice sorgente.
   + Scegli **Inserisci comandi di compilazione per utilizzare la console per inserire i comandi di compilazione**.

   Per ulteriori informazioni, consulta [Riferimento per buildspec](build-spec-ref.md).

1. In **Artifacts (Artefatti)**:  
**Tipo**  
Seleziona una delle seguenti opzioni:  
   + Se non si desidera creare artefatti di output di compilazione, scegliere **No artifacts (Nessun artefatto)**.
   + Per archiviare l'output della build in un bucket S3, scegli **Amazon S3**, quindi procedi come segue:
     + Se desideri utilizzare il tuo nome di progetto per la cartella o il file ZIP di output di compilazione, lascia vuoto il campo **Name (Nome)**. In caso contrario, digitare il nome. Per impostazione predefinita, il nome dell'artefatto è quello del progetto. Se si desidera utilizzare un nome diverso, immetterlo nella casella del nome degli artefatti. Se si desidera eseguire l'output di un file .ZIP, includere l'estensione .zip.
     + Per **Bucket name (Nome bucket)** selezionare il nome del bucket di output.
     + Se hai scelto **Insert build commands (Inserisci comandi di compilazione)** in una fase precedente di questa procedura, quindi per **Output files (File di output)**, immetti le posizioni dei file di compilazione che desideri inserire nella cartella o nel file ZIP dell'output di compilazione. Per più posizioni, separarne ognuna con una virgola (per esempio, `appspec.yml, target/my-app.jar`). Per ulteriori informazioni, consultare la descrizione di `files` in [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Configurazione aggiuntiva**  
Espandere **Additional configuration (Configurazione aggiuntiva)** e impostare le opzioni come opportuno.

1. Scegliere **Create build project (Crea progetto di compilazione)**. Nella pagina **Review (Verifica)**, selezionare **Start build (Avvia compilazione)** per eseguire la compilazione.

## Passaggio 2: attiva una build con un webhook Bitbucket
<a name="sample-bitbucket-pull-request-trigger"></a>

Per un progetto che utilizza webhook Bitbucket, AWS CodeBuild crea una build quando il repository Bitbucket rileva una modifica nel codice sorgente. 

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

1. Nel riquadro di navigazione, selezionare **Build projects (Compilare progetti)**, quindi selezionare un progetto associato a un repository di Bitbucket con webhook. Per informazioni sulla creazione di un progetto webhook Bitbucket, consulta. [Passaggio 1: crea un progetto di compilazione con Bitbucket e abilita i webhook](#sample-bitbucket-pull-request-create) 

1. Apportare modifiche al codice nel repository Bitbucket del progetto. 

1. Creare una richiesta pull nel repository Bitbucket. Per ulteriori informazioni, consultare l'articolo relativo alla [creazione di una richiesta pull](https://www.atlassian.com/git/tutorials/making-a-pull-request). 

1. Nella pagina dei webhook Bitbucket, selezionare **View request (Visualizzare richiesta)** per visualizzare un elenco di eventi recenti. 

1. Scegli **Visualizza dettagli per visualizzare i** dettagli sulla risposta restituita da. CodeBuild Potrebbe essere simile al seguente: 

   ```
   "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..."
   "statusCode":200
   ```

1. Navigare alla pagina della richiesta pull Bitbucket per visualizzare lo stato della compilazione. 

# Esegui l'esempio di GitHub Enterprise Server per CodeBuild
<a name="sample-github-enterprise"></a>

AWS CodeBuild supporta GitHub Enterprise Server come repository di origine. Questo esempio mostra come configurare i CodeBuild progetti quando nel repository di GitHub Enterprise Server è installato un certificato. Mostra anche come abilitare i webhook in modo da CodeBuild ricostruire il codice sorgente ogni volta che una modifica al codice viene inserita nell'archivio di Enterprise Server. GitHub 

**Topics**
+ [

## Prerequisiti
](#sample-github-enterprise-prerequisites)
+ [

## Fase 1: Creare un progetto di compilazione con GitHub Enterprise Server e abilitare i webhook
](#sample-github-enterprise-running)

## Prerequisiti
<a name="sample-github-enterprise-prerequisites"></a>

1. Genera un token di accesso personale per il tuo progetto. CodeBuild Ti consigliamo di creare un utente GitHub Enterprise e generare un token di accesso personale per questo utente. Copialo negli appunti in modo che possa essere utilizzato durante la CodeBuild creazione del progetto. Per ulteriori informazioni, consulta [Creazione di un token di accesso personale per la riga di comando sul sito Web](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) di GitHub Help.

   Quando si crea il token di accesso personale, includere l'ambito del **repo (repository)** nella definizione.  
![\[L'ambito del repo nella definizione.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/scopes.png)

1. Scarica il certificato da GitHub Enterprise Server. CodeBuild utilizza il certificato per stabilire una connessione SSL affidabile al repository.

   **Client Linux/macOS:**

   Dalla finestra di un terminale, eseguire il comando riportato qui sotto:

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   Sostituire i segnaposto nel comando con i seguenti valori:

   *HOST*. L'indirizzo IP del repository GitHub Enterprise Server.

   *PORTNUMBER*. Il numero di porta che stai utilizzando per la connessione (ad esempio, 443).

   *folder*. La cartella in cui hai scaricato il certificato.

   *filename*. Il nome del file del certificato.
**Importante**  
Salva il certificato come file .pem.

   **Client Windows:**

   Utilizzate il browser per scaricare il certificato da GitHub Enterprise Server. Per visualizzare i dettagli del certificato del sito, selezionare l'icona a forma di lucchetto. Per informazioni su come esportare il certificato, consultare la documentazione del browser.
**Importante**  
Salva il certificato come file .pem.

1. Caricare il file di certificato in un bucket S3. Per informazioni su come creare un bucket S3, consulta [Come creare un bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) Per informazioni sul caricamento di oggetti in un bucket S3, consulta [Come caricare file e cartelle in un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).
**Nota**  
Questo bucket deve trovarsi nella stessa AWS regione delle tue build. Ad esempio, se si richiede di CodeBuild eseguire una build nella regione Stati Uniti orientali (Ohio), il bucket deve trovarsi nella regione Stati Uniti orientali (Ohio).

## Fase 1: Creare un progetto di compilazione con GitHub Enterprise Server e abilitare i webhook
<a name="sample-github-enterprise-running"></a>

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione. I nomi dei progetti di compilazione devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1. In **Source**, in **Source provider**, scegli **GitHub Enterprise Server**.
   + Scegli **Gestisci le credenziali dell'account**, quindi scegli **Token di accesso personale**. Per **Service**, scegli **Secrets Manager (consigliato)** e configura il tuo segreto. Quindi**, in GitHub Enterprise Personal Access Token**, inserisci il tuo token di accesso personale e scegli **Salva**.
   + In **Repository URL (URL Repository)**, inserire il percorso del repository, compreso il nome del repository.
   + Espandere **Additional configuration (Configurazione aggiuntiva)**.
   + Selezionare **Rebuild every time a code change is pushed to this repository (Ricompila ogni volta che viene inviata una modifica del codice a questo repository)** per rieseguire la compilazione ogni volta che viene inviata una modifica del codice a questo repository.
   + Seleziona **Abilita SSL non sicuro** per ignorare gli avvisi SSL durante la connessione al repository del progetto GitHub Enterprise Server.
**Nota**  
Si consiglia di utilizzare **Enable insecure SSL (Abilita SSL non sicuro)** solo nella fase di test. Non deve essere utilizzato in un ambiente di produzione.  
![\[La configurazione del repository del progetto GitHub Enterprise Server.\]](http://docs.aws.amazon.com/it_it/codebuild/latest/userguide/images/github-enterprise.png)

1. In **Environment (Ambiente)**:

   Per **Environment image (Immagine ambiente)**, procedere in uno dei seguenti modi:
   + **Per utilizzare un'immagine Docker gestita da AWS CodeBuild, scegli **Immagine gestita**, quindi effettua le selezioni tra **Sistema operativo**, **Runtime (s)**, **Image e Image** version.** Se disponibile, eseguire una selezione da **Environment type (Tipo ambiente)**.
   + Per utilizzare un'altra immagine Docker, selezionare **Custom image (Immagine personalizzata)**. **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Se si sceglie **Other registry (Altro registro)**, fin **External registry URL (URL registro esterno)**, inserire il nome e il tag dell'immagine Docker in Docker Hub, utilizzando il formato `docker repository/docker image name`. Se scegli **Amazon ECR**, utilizza il **repository Amazon ECR e** l'immagine **Amazon ECR per scegliere l'immagine** Docker nel tuo account. AWS 
   + **Per utilizzare un'immagine Docker privata, scegli Immagine personalizzata.** **Per il **tipo di ambiente**, scegli **ARM**, **Linux**, **Linux GPU** o Windows.** Per **Image registry (Registro immagine)**, selezionare **Other registry (Altro registro)**, quindi immettere l'ARN delle credenziali per l'immagine Docker privata. Le credenziali devono essere create da Secrets Manager. Per ulteriori informazioni, consulta [Che cos'è Gestione dei segreti AWS?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) nella *Guida per l'utente di Gestione dei segreti AWS *.

1. In **Service role (Ruolo del servizio)**, procedere in uno dei seguenti modi:
   + Se non disponi di un ruolo CodeBuild di servizio, scegli **Nuovo ruolo di servizio**. In **Nome ruolo**, inserisci un nome per il nuovo ruolo.
   + Se hai un ruolo CodeBuild di servizio, scegli **Ruolo di servizio esistente**. In **Role ARN, scegli il ruolo** di servizio.
**Nota**  
Quando utilizzi la console per creare o aggiornare un progetto di build, puoi creare contemporaneamente un ruolo di CodeBuild servizio. Per impostazione predefinita, il ruolo funziona solo con tale progetto di compilazione. Se si utilizza la console per associare questo ruolo del servizio con un altro progetto di compilazione, il ruolo viene aggiornato per funzionare con l'altro progetto. Un ruolo del servizio può funzionare con un massimo di 10 progetti di compilazione.

1. Espandere **Additional configuration (Configurazione aggiuntiva)**.

   Se vuoi CodeBuild lavorare con il tuo VPC:
   + Per **VPC**, scegli l'ID VPC che utilizza. CodeBuild 
   + Per le sottoreti **VPC, scegli le sottoreti** che includono le risorse che utilizza. CodeBuild 
   + Per i **gruppi di sicurezza VPC**, scegli i gruppi di sicurezza da CodeBuild utilizzare per consentire l'accesso alle risorse in. VPCs

   Per ulteriori informazioni, consulta [Utilizzo AWS CodeBuild con Amazon Virtual Private Cloud](vpc-support.md).

1. In **Buildspec**, esegui una delle seguenti operazioni:
   + Scegliete **Usa un file buildspec per usare il file** buildspec.yml nella directory principale del codice sorgente.
   + Scegli **Inserisci comandi di compilazione per utilizzare la console per inserire i comandi di compilazione**.

   Per ulteriori informazioni, consulta [Riferimento per buildspec](build-spec-ref.md).

1. In **Artifacts (Artefatti)**, per **Type (Tipo)**, procedere in uno dei seguenti modi:
   + Se non si desidera creare artefatti di output di compilazione, scegliere **No artifacts (Nessun artefatto)**.
   + Per archiviare l'output della build in un bucket S3, scegli **Amazon S3**, quindi procedi come segue:
     + Se desideri utilizzare il tuo nome di progetto per la cartella o il file ZIP di output di compilazione, lascia vuoto il campo **Name (Nome)**. In caso contrario, digitare il nome. Per impostazione predefinita, il nome dell'artefatto è quello del progetto. Se si desidera utilizzare un nome diverso, immetterlo nella casella del nome degli artefatti. Se si desidera eseguire l'output di un file .ZIP, includere l'estensione .zip.
     + Per **Bucket name (Nome bucket)** selezionare il nome del bucket di output.
     + Se hai scelto **Insert build commands (Inserisci comandi di compilazione)** in una fase precedente di questa procedura, quindi per **Output files (File di output)**, immetti le posizioni dei file di compilazione che desideri inserire nella cartella o nel file ZIP dell'output di compilazione. Per più posizioni, separarne ognuna con una virgola (per esempio, `appspec.yml, target/my-app.jar`). Per ulteriori informazioni, consultare la descrizione di `files` in [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. In **Cache type (Tipo di cache)**, procedere in uno dei modi seguenti:
   + Se non si desidera utilizzare una cache, scegliere **No cache (Nessuna cache)**.
   + Se desideri utilizzare una cache Amazon S3, scegli **Amazon S3** e procedi come segue:
     + Per **Bucket**, selezionare il nome del bucket S3 in cui è archiviata la cache.
     + (Facoltativo) Per il **prefisso del percorso della cache**, inserisci un prefisso del percorso Amazon S3. Il valore **Cache path prefix (Prefisso percorso cache)** è simile a un nome di directory. Consente di archiviare la cache sotto la stessa directory in un bucket. 
**Importante**  
Non aggiungere una barra finale (/) alla fine del prefisso del percorso.
   +  Se si desidera utilizzare una cache locale, selezionare **Local (Locale)**, quindi scegliere una o più modalità cache locali. 
**Nota**  
La modalità Cache di livello Docker è disponibile solo per Linux. Se la scegli, il progetto deve essere eseguito in modalità privilegiata. 

   L'utilizzo di una cache consente di risparmiare tempo di compilazione perché alcune parti riutilizzabili dell'ambiente di compilazione vengono memorizzate nella cache e utilizzate in compilazioni diverse. Per informazioni su come specificare una cache nel file di specifiche di compilazione, consulta [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax). Per ulteriori informazioni sul caching, consulta [Creazioni di cache per migliorare le prestazioni](build-caching.md). 

1. Scegliere **Create build project (Crea progetto di compilazione)**. Nella pagina di compilazione del progetto, selezionare **Start build (Avvia compilazione)**.

# Esegui l'esempio di GitHub pull request e di filtro webhook per CodeBuild
<a name="sample-github-pull-request"></a>

AWS CodeBuild supporta i webhook quando il repository di origine è. GitHub Ciò significa che per un progetto di CodeBuild compilazione il cui codice sorgente è archiviato in un GitHub repository, i webhook possono essere utilizzati per ricostruire il codice sorgente ogni volta che viene inserita una modifica al codice nel repository. [Per alcuni esempi, consulta Samples. CodeBuild AWS CodeBuild](https://github.com/aws-samples/aws-codebuild-samples)

**Nota**  
Quando si utilizzano i webhook, è possibile che un utente attivi una build inaspettata. Per mitigare questo rischio, vedi. [Procedure consigliate per l'utilizzo dei webhook](webhooks.md#webhook-best-practices)

**Topics**
+ [

## Fase 1: Creare un progetto di compilazione con GitHub e abilitare i webhook
](#sample-github-pull-request-running)
+ [

## Passaggio 2: verifica che i webhook siano abilitati
](#verification-checks)

## Fase 1: Creare un progetto di compilazione con GitHub e abilitare i webhook
<a name="sample-github-pull-request-running"></a>

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. Scegliere **Create build project (Crea progetto di compilazione)**. 

1. In **Project configuration (Configuratore progetto)**:  
**Project name** (Nome progetto)  
Inserisci un nome per questo progetto di compilazione. I nomi dei progetti di build devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1. In **Source (Origine)**:  
**Fornitore di origine**  
Scegli **GitHub**. Segui le istruzioni per connetterti (o riconnetterti) con GitHub , quindi scegli **Autorizza**.  
**Repository**  
Scegli **Repository nel mio account**. GitHub  
**GitHub deposito**  
Inserisci l'URL del tuo GitHub repository.

1. In **Primary source webhook events**, seleziona quanto segue.
**Nota**  
La sezione **Primary source webhook events** è visibile solo se hai scelto **Repository nel mio GitHub account nel passaggio** precedente.

   1. Al momento della creazione di un progetto, selezionare **Rebuild every time a code change is pushed to this repository (Ricompila ogni volta che viene inviata una modifica del codice a questo repository)**. 

   1. Da **Event type (Tipo di evento)**, selezionare uno o più eventi. 

   1. Per applicare un filtro che stabilisce quando un evento avvia una compilazione, in **Start a build under these conditions (Avvia una compilazione in queste condizioni)** aggiungere uno o più filtri facoltativi. 

   1. Per applicare un filtro che stabilisce quando un evento non avvia una compilazione, in **Don't start a build under these conditions (Non avviare una compilazione in queste condizioni)** aggiungere uno o più filtri facoltativi. 

   1. Scegli **Aggiungi gruppo di filtri** per aggiungere un altro gruppo di filtri, se necessario. 

   Per ulteriori informazioni sui tipi di eventi e sui filtri dei GitHub webhook, consulta[GitHub eventi webhook](github-webhook.md).

1. In **Environment (Ambiente)**:  
**Immagine dell'ambiente**  
Seleziona una delle seguenti opzioni:    
Per utilizzare un'immagine Docker gestita da AWS CodeBuild:  
Scegli **Immagine gestita**, quindi effettua le selezioni tra **Sistema operativo**, **Runtime (s)**, **Immagine e Versione dell'****immagine**. Se disponibile, eseguire una selezione da **Environment type (Tipo ambiente)**.  
Per usare un'altra immagine Docker:  
Scegli **Immagine personalizzata**. Per il **tipo di ambiente**, scegli **ARM**, **Linux****, Linux GPU** o **Windows**. Se si sceglie **Other registry (Altro registro)**, fin **External registry URL (URL registro esterno)**, inserire il nome e il tag dell'immagine Docker in Docker Hub, utilizzando il formato `docker repository/docker image name`. Se scegli **Amazon ECR**, utilizza il **repository Amazon ECR e** l'immagine **Amazon ECR per scegliere l'immagine** Docker nel tuo account. AWS   
Per utilizzare un'immagine Docker privata:  
Scegli **Immagine personalizzata**. Per il **tipo di ambiente**, scegli **ARM**, **Linux****, Linux GPU** o **Windows**. Per **Image registry (Registro immagine)**, selezionare **Other registry (Altro registro)**, quindi immettere l'ARN delle credenziali per l'immagine Docker privata. Le credenziali devono essere create da Secrets Manager. Per ulteriori informazioni, consulta [What](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) Is? Gestione dei segreti AWS nella *Guida Gestione dei segreti AWS per l'utente*.  
**Ruolo di servizio**  
Seleziona una delle seguenti opzioni:  
   + Se non disponi di un ruolo CodeBuild di servizio, scegli **Nuovo ruolo di servizio**. In **Nome ruolo**, inserisci un nome per il nuovo ruolo.
   + Se hai un ruolo CodeBuild di servizio, scegli **Ruolo di servizio esistente**. In **Role ARN, scegli il ruolo** di servizio.
Quando utilizzi la console per creare o aggiornare un progetto di build, puoi creare contemporaneamente un ruolo di CodeBuild servizio. Per impostazione predefinita, il ruolo funziona solo con tale progetto di compilazione. Se si utilizza la console per associare questo ruolo del servizio con un altro progetto di compilazione, il ruolo viene aggiornato per funzionare con l'altro progetto. Un ruolo del servizio può funzionare con un massimo di 10 progetti di compilazione.

1. In **Buildspec**, esegui una delle seguenti operazioni:
   + Scegliete **Usa un file buildspec per usare il file** buildspec.yml nella directory principale del codice sorgente.
   + Scegli **Inserisci comandi di compilazione per utilizzare la console per inserire i comandi di compilazione**.

   Per ulteriori informazioni, consulta [Riferimento per buildspec](build-spec-ref.md).

1. In **Artifacts (Artefatti)**:  
**Tipo**  
Seleziona una delle seguenti opzioni:  
   + Se non si desidera creare artefatti di output di compilazione, scegliere **No artifacts (Nessun artefatto)**.
   + Per archiviare l'output della build in un bucket S3, scegli **Amazon S3**, quindi procedi come segue:
     + Se desideri utilizzare il tuo nome di progetto per la cartella o il file ZIP di output di compilazione, lascia vuoto il campo **Name (Nome)**. In caso contrario, digitare il nome. Per impostazione predefinita, il nome dell'artefatto è quello del progetto. Se si desidera utilizzare un nome diverso, immetterlo nella casella del nome degli artefatti. Se si desidera eseguire l'output di un file .ZIP, includere l'estensione .zip.
     + Per **Bucket name (Nome bucket)** selezionare il nome del bucket di output.
     + Se hai scelto **Insert build commands (Inserisci comandi di compilazione)** in una fase precedente di questa procedura, quindi per **Output files (File di output)**, immetti le posizioni dei file di compilazione che desideri inserire nella cartella o nel file ZIP dell'output di compilazione. Per più posizioni, separarne ognuna con una virgola (per esempio, `appspec.yml, target/my-app.jar`). Per ulteriori informazioni, consultare la descrizione di `files` in [Sintassi buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Configurazione aggiuntiva**  
Espandere **Additional configuration (Configurazione aggiuntiva)** e impostare le opzioni come opportuno.

1. Scegliere **Create build project (Crea progetto di compilazione)**. Nella pagina **Review (Verifica)**, selezionare **Start build (Avvia compilazione)** per eseguire la compilazione.

## Passaggio 2: verifica che i webhook siano abilitati
<a name="verification-checks"></a>

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

1. Nel riquadro di navigazione, scegliere **Build projects (Progetti di compilazione)**.

1. Esegui una delle seguenti operazioni:
   + Selezionare il collegamento del progetto di compilazione con i webhook da verificare, quindi selezionare **Build details (Dettagli compilazione)**.
   + **Scegli il pulsante accanto al progetto di compilazione con i webhook che desideri verificare, scegli **Visualizza dettagli, quindi scegli la scheda Dettagli** della build.**

1. In **Primary source webhook events**, scegli il link URL **Webhook**. 

1. **Nel tuo GitHub repository, nella pagina **Impostazioni**, sotto **Webhook**, verifica che siano selezionate le **Pull Requests** e Push.**

1. Nelle impostazioni del tuo GitHub profilo, in **Impostazioni personali**, **Applicazioni**, ** OAuthApp autorizzate**, dovresti vedere che l'applicazione è stata autorizzata ad accedere alla AWS regione selezionata.

# Tutorial: firma del codice Apple con Fastlane nell' CodeBuild utilizzo di S3 per l'archiviazione dei certificati
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) è un popolare strumento di automazione open source per automatizzare le distribuzioni e le versioni beta per le tue app iOS e Android. Gestisce tutte le attività noiose, come la generazione di schermate, la firma del codice e il rilascio dell'applicazione.

## Prerequisiti
<a name="sample-fastlane-prerequisites"></a>

Per completare questo tutorial, devi prima aver impostato quanto segue:
+ Un Account AWS
+ Un [account Apple Developer](https://developer.apple.com/)
+ Un bucket S3 per l'archiviazione dei certificati
+ fastlane installato nel tuo progetto - [Guida](https://docs.fastlane.tools/getting-started/ios/setup/) all'installazione di fastlane

## Passaggio 1: configura Fastlane Match con S3 sul tuo computer locale
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) è uno degli [strumenti di Fastlane](https://fastlane.tools/) e consente una configurazione senza interruzioni per la firma del codice sia nell'ambiente di sviluppo locale che in quello successivo. CodeBuild Fastlane Match archivia tutti i certificati di firma del codice e i profili di provisioning in un repository/S3 Bucket/Google cloud storage Git e scarica e installa i certificati e i profili necessari quando richiesto.

In questa configurazione di esempio, configurerai e utilizzerai un bucket Amazon S3 per lo storage. 

****

1. Inizializza match nel tuo progetto:

   ```
   fastlane match init
   ```

1. Quando richiesto, scegli S3 come modalità di archiviazione.

1. Aggiorna il tuo `*Matchfile*` per usare S3:

   ```
   storage_mode("s3")
      s3_bucket("your-s3-bucket-name")
      s3_region("your-aws-region")
      type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
   ```

## Passaggio 2: configura il tuo Fastfile
<a name="sample-fastlane-S3-fastfile"></a>

Crea o aggiorna il tuo `Fastfile` con la seguente corsia.

Sì CodeBuild, Fastlane Match dovrà essere eseguito ogni volta che crei e firmi la tua app. Il modo più semplice per farlo è aggiungere l'`match`azione alla corsia in cui viene creata l'app.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Nota**  
Assicurati di aggiungerla `setup_ci` alla `before_all ` sezione in `Fastfile` affinché l'azione della partita funzioni correttamente. Ciò garantisce che venga utilizzato un portachiavi Fastlane temporaneo con le autorizzazioni appropriate. Senza utilizzarlo, è possibile che si verifichino errori di compilazione o risultati incoerenti. 



## Passaggio 3: Esegui il `fastlane match` comando per generare i rispettivi certificati e profili
<a name="sample-fastlane-S3-certificates"></a>

Il comando fastlane match per il tipo specificato (ad esempio development, appstore, adhoc, enterprise) genererà il certificato e il profilo se non sono disponibili nell'archivio remoto. I certificati e i profili verranno archiviati in S3 da fastlane.

```
bundle exec fastlane match appstore
```

L'esecuzione del comando sarà interattiva e fastlane chiederà di impostare la passphrase per decrittografare i certificati.

## Fase 4: Crea il file dell'applicazione per il tuo progetto
<a name="sample-fastlane-S3-appfile"></a>

Create o aggiungete il file dell'applicazione appropriato per il vostro progetto.

****

1. Crea o aggiungi [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) in base ai requisiti di costruzione del tuo progetto.

1. Effettua le modifiche nel tuo repository remoto

## Fase 5: Creare variabili di ambiente in Secrets Manager
<a name="sample-fastlane-S3-secrets"></a>

Crea due segreti per memorizzare il cookie di sessione fastlane e la passphrase corrispondente. Per ulteriori informazioni sulla creazione di segreti in Secrets Manager, consulta [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Accedi al cookie di sessione fastlane come segue.

   1. Chiave segreta - `FASTLANE_SESSION`

   1. Valore segreto: cookie di sessione generato dall'esecuzione del seguente comando sul computer locale.
**Nota**  
Questo valore è disponibile dopo l'autenticazione in un file locale:`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <apple account>
      ```

1. Password Fastlane Match - Per consentire a Fastlane Match di decrittografare i certificati e i profili archiviati nel bucket S3, è necessario aggiungere la passphrase di crittografia configurata nella fase di configurazione di Match alle variabili di ambiente del progetto. CodeBuild

   1. Chiave segreta - `MATCH_PASSWORD`

   1. Valore segreto -*<match passphrase to decrypt certificates>*. La passphrase viene impostata durante la generazione dei certificati nel passaggio 3.

**Nota**  
Durante la creazione dei segreti di cui sopra in Secrets Manager, ricordati di assegnare un nome segreto con il seguente prefisso: `/CodeBuild/`

## Fase 6: Creare una flotta di elaborazione
<a name="sample-fastlane-S3-fleet"></a>

Crea la flotta di elaborazione per il tuo progetto.

****

1. Nella console, vai a CodeBuild e crea una nuova flotta di elaborazione.

1. Scegli «macOS» come sistema operativo e seleziona un tipo di calcolo e un'immagine appropriati.

## Passaggio 7: Crea un progetto in CodeBuild
<a name="sample-fastlane-S3-project"></a>

Crea il tuo progetto in CodeBuild.



****

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. Configura il tuo provider di origine (ad esempio,). GitHub CodeCommit Questo è il repository dei sorgenti del progetto iOS e non l'archivio dei certificati.

1.  In **Environment (Ambiente)**: 
   + Scegli Capacità **riservata.**
   + Per **Fleet**, seleziona la flotta creata sopra.
   + Fornisci il nome del ruolo di servizio che CodeBuild creerai per te.
   + Fornisci le seguenti variabili di ambiente.
     + Nome:`MATCH_PASSWORD`, Valore:*<secrets arn>*, Tipo: Secrets Manager (Secrets ARN creato nel passaggio 5 per MATCH\$1PASSWORD)
     + Nome:`FASTLANE_SESSION`, Valore:*<secrets arn>*, Tipo: Secrets Manager (Secrets ARN creato nel passaggio 5 per FASTLANE\$1SESSION)

1. In **Buildspec**, aggiungi quanto segue:

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Fase 8: Configurazione del ruolo IAM
<a name="sample-fastlane-S3-role"></a>

Una volta creato il progetto, assicurati che il ruolo di servizio del CodeBuild progetto disponga delle autorizzazioni per accedere al bucket S3 contenente i certificati. Aggiungi la seguente politica al ruolo:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name/*"
        }
    ]
}
```

------

## Passaggio 9: Esegui la build
<a name="sample-fastlane-S3-run"></a>

Eseguire la compilazione. Puoi controllare lo stato della build e accedere. CodeBuild

Una volta completato il lavoro, potrai visualizzare il registro del lavoro.

## Risoluzione dei problemi
<a name="sample-fastlane-S3-troubleshooting"></a>
+ Se riscontri problemi con il recupero dei certificati, assicurati che le autorizzazioni IAM siano configurate correttamente per l'accesso a S3.
+ Se riscontri problemi con la decrittografia dei certificati, assicurati di impostare la passphrase corretta nella variabile di ambiente MATCH\$1PASSWORD.
+ Per problemi di firma del codice, verifica che il tuo account Apple Developer disponga dei certificati e dei profili necessari e che l'identificatore del pacchetto nel tuo progetto Xcode corrisponda a quello nel tuo profilo di provisioning.

## Considerazioni relative alla sicurezza
<a name="sample-fastlane-considerations"></a>

Di seguito sono riportate le considerazioni sulla sicurezza relative a questo tutorial.
+ Assicurati che il tuo bucket S3 abbia le impostazioni di sicurezza appropriate, inclusa la crittografia a riposo. In particolare, assicurati che il bucket non abbia accesso pubblico e limita l'accesso solo CodeBuild al sistema che deve avere accesso.
+ Prendi in considerazione l'utilizzo Gestione dei segreti AWS per archiviare informazioni sensibili come MATCH\$1PASSWORD e FASTLANE\$1SESSION.

Questo esempio fornisce una configurazione per la firma del codice iOS con Fastlane CodeBuild utilizzando Amazon S3 per l'archiviazione dei certificati. Potrebbe essere necessario modificare alcuni passaggi in base ai requisiti e CodeBuild all'ambiente specifici del progetto. Questo approccio sfrutta i AWS servizi per una maggiore sicurezza e integrazione all'interno dell' AWS ecosistema.

# Tutorial: utilizzo della firma del codice Apple con Fastlane GitHub per CodeBuild l'archiviazione dei certificati
<a name="sample-fastlane-github"></a>

[fastlane](https://docs.fastlane.tools/) è un popolare strumento di automazione open source per automatizzare le distribuzioni e le versioni beta per le tue app iOS e Android. Gestisce tutte le attività noiose, come la generazione di schermate, la firma del codice e il rilascio dell'applicazione.

Questo esempio dimostra come configurare la firma del codice Apple utilizzando Fastlane in un CodeBuild progetto in esecuzione su Mac Fleet, GitHub come spazio di archiviazione per certificati e profili di provisioning.

## Prerequisiti
<a name="sample-fastlane-github-prerequisites"></a>

Per completare questo tutorial, devi prima aver impostato quanto segue:
+ Un Account AWS
+ Un [account Apple Developer](https://developer.apple.com/)
+ Un GitHub archivio privato per l'archiviazione dei certificati
+ fastlane installato nel tuo progetto - [Guida](https://docs.fastlane.tools/getting-started/ios/setup/) all'installazione di fastlane

## Passaggio 1: configura Fastlane Match con GitHub sul tuo computer locale
<a name="sample-fastlane-github-certificates"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) è uno degli [strumenti di Fastlane](https://fastlane.tools/) e consente una configurazione senza interruzioni per la firma del codice sia nell'ambiente di sviluppo locale che in quello successivo. CodeBuild Fastlane Match archivia tutti i certificati di firma del codice e i profili di provisioning in un repository/S3 Bucket/Google cloud storage Git e scarica e installa i certificati e i profili necessari quando richiesto.

In questa configurazione di esempio, configureremo e utilizzeremo un repository Git per l'archiviazione. 

****

1. Inizializza match nel tuo progetto:

   ```
   fastlane match init
   ```

1. Quando richiesto, scegli GitHub come modalità di archiviazione.

1. Aggiorna il tuo `*Matchfile*` per usare: GitHub

   ```
   git_url("https://github.com/your-username/your-certificate-repo.git")
   storage_mode("git")
   type("development") # The default type, can be: appstore, adhoc, enterprise or development
   ```

**Nota**  
Assicurati di inserire l'URL HTTPS per il tuo repository Git per l'autenticazione e la clonazione con successo di fastlane. Altrimenti, potresti visualizzare un errore di autenticazione quando tenti di utilizzare match.

## Passaggio 2: configura il tuo Fastfile
<a name="sample-fastlane-github-fastfile"></a>

Crea o aggiorna il tuo `Fastfile` con la seguente corsia.

Sì CodeBuild, Fastlane Match dovrà essere eseguito ogni volta che crei e firmi la tua app. Il modo più semplice per farlo è aggiungere l'`match`azione alla corsia in cui viene creata l'app.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Nota**  
Assicurati di aggiungerla `setup_ci` alla `before_all ` sezione in `Fastfile` affinché l'azione della partita funzioni correttamente. Ciò garantisce che venga utilizzato un portachiavi Fastlane temporaneo con le autorizzazioni appropriate. Senza utilizzarlo, è possibile che si verifichino errori di compilazione o risultati incoerenti. 

## Passaggio 3: Esegui il `fastlane match` comando per generare i rispettivi certificati e profili
<a name="sample-fastlane-github-certificates"></a>

Il comando fastlane match per il tipo specificato (ad esempio development, appstore, adhoc, enterprise) genererà il certificato e il profilo se non sono disponibili nell'archivio remoto. I certificati e i profili verranno archiviati da fastlane. GitHub 

```
bundle exec fastlane match appstore
```

L'esecuzione del comando sarà interattiva e fastlane chiederà di impostare la passphrase per decrittografare i certificati.

## Fase 4: Crea il file dell'applicazione per il tuo progetto
<a name="sample-fastlane-github-appfile"></a>

Create o aggiungete il file dell'applicazione appropriato per il vostro progetto.

****

1. Crea o aggiungi [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) in base ai requisiti di costruzione del tuo progetto.

1. Effettua le modifiche nel tuo repository remoto.

## Fase 5: Creare variabili di ambiente in Secrets Manager
<a name="sample-fastlane-github-secrets"></a>

Crea tre segreti per memorizzare il cookie di sessione fastlane e la passphrase corrispondente. Per ulteriori informazioni sulla creazione di segreti in Secrets Manager, consulta [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Accedi al cookie di sessione fastlane come segue.

   1. Chiave segreta - `FASTLANE_SESSION`

   1. Valore segreto: cookie di sessione generato dall'esecuzione del seguente comando sul computer locale.
**Nota**  
Questo valore è disponibile dopo l'autenticazione in un file locale:`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <Apple_account>
      ```

1. Password Fastlane Match - Per consentire a Fastlane Match di decrittografare i certificati e i profili archiviati nel repository Git, è necessario aggiungere la passphrase di crittografia configurata nella fase di configurazione di Match alle variabili di ambiente del progetto. CodeBuild 

   1. Chiave segreta - `MATCH_PASSWORD`

   1. Valore segreto -`<match passphrase to decrypt certificates>`. La passphrase viene impostata durante la generazione dei certificati nel passaggio 3.

1. *Fastlane`MATCH_GIT_BASIC_AUTHORIZATION`: imposta un'autorizzazione di base per la partita:*

   1. Chiave segreta: 

      `MATCH_GIT_BASIC_AUTHORIZATION`

   1. Valore segreto: il valore deve essere una stringa codificata in base 64 contenente il nome utente e il token di accesso personale (PAT) nel formato. `username:password` Puoi generarlo usando il seguente comando:

      ```
      echo -n your_github_username:your_personal_access_token | base64
      ```

      Puoi generare il tuo PAT sulla GitHub console in Il mio **profilo > Impostazioni > Impostazioni degli sviluppatori > Token di accesso personale**. [Per ulteriori informazioni, consulta la seguente guida: -. https://docs.github.com/en/ authentication/keeping-your-account-and-data-secure/managing your-personal-access-tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)

**Nota**  
Durante la creazione dei segreti di cui sopra in Secrets Manager, ricordati di assegnare un nome segreto con il seguente prefisso: `/CodeBuild/`

## Fase 6: Creare una flotta di elaborazione
<a name="sample-fastlane-github-fleet"></a>

Crea la flotta di elaborazione per il tuo progetto.

****

1. Nella console, vai a CodeBuild e crea una nuova flotta di elaborazione.

1. Scegli `macOS` come sistema operativo e seleziona il tipo di elaborazione e l'immagine appropriati.

## Fase 7: Creare un progetto in CodeBuild
<a name="sample-fastlane-github-project"></a>

Crea il tuo progetto in CodeBuild.

****

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. Configura il tuo provider di origine (ad esempio,). GitHub CodeCommit Questo è il repository dei sorgenti del progetto iOS e non l'archivio dei certificati.

1.  In **Environment (Ambiente)**: 
   + Scegli Capacità **riservata.**
   + Per **Fleet**, seleziona la flotta creata sopra.
   + Fornisci il nome del ruolo di servizio che CodeBuild creerai per te.
   + Fornisci le seguenti variabili di ambiente.
     + Nome:`MATCH_PASSWORD`, Valore:*<secrets arn>*, Tipo: Secrets Manager (Secrets ARN creato nel passaggio 5 per MATCH\$1PASSWORD)
     + Nome:`FASTLANE_SESSION`, Valore:*<secrets arn>*, Tipo: Secrets Manager (Secrets ARN creato nel passaggio 5 per FASTLANE\$1SESSION)
     + Nome:`MATCH_GIT_BASIC_AUTHORIZATION`, Valore:*<secrets ARN>*, Tipo: Secrets Manager Secrets ARN (creato nel passaggio 5 per) `MATCH_GIT_BASIC_AUTHORIZATION`

1. In **Buildspec**, aggiungi quanto segue:

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Passaggio 8: esegui la build
<a name="sample-fastlane-github-run"></a>

Eseguire la compilazione. Puoi controllare lo stato della build e accedere. CodeBuild

Una volta completato il lavoro, potrai visualizzare il registro del lavoro.

## Risoluzione dei problemi
<a name="sample-fastlane-github-troubleshooting"></a>
+ Se riscontri problemi di accesso al GitHub repository, ricontrolla il tuo token di accesso personale e la variabile di ambiente MATCH\$1GIT\$1BASIC\$1AUTHORIZATION.
+ Se riscontri problemi con la decrittografia dei certificati, assicurati di impostare la passphrase corretta nella variabile di ambiente MATCH\$1PASSWORD.
+ Per problemi di firma del codice, verifica che il tuo account Apple Developer disponga dei certificati e dei profili necessari e che l'identificatore del pacchetto nel tuo progetto Xcode corrisponda a quello nel tuo profilo di provisioning.

## Considerazioni relative alla sicurezza
<a name="sample-fastlane-github-considerations"></a>

Di seguito sono riportate le considerazioni sulla sicurezza relative a questo tutorial.
+ Mantieni privato il tuo GitHub archivio di certificati e verifica regolarmente l'accesso.
+ Prendi in considerazione l'utilizzo Gestione dei segreti AWS per l'archiviazione di informazioni sensibili come MATCH\$1PASSWORD e FASTLANE\$1SESSION.

Questo esempio fornisce una configurazione per la firma del codice iOS con Fastlane da CodeBuild utilizzare GitHub per l'archiviazione dei certificati. Potrebbe essere necessario modificare alcuni passaggi in base ai requisiti e all' CodeBuild ambiente specifici del progetto. Questo approccio sfrutta i AWS servizi per una maggiore sicurezza e integrazione all'interno dell' AWS ecosistema.

# Imposta i nomi degli artefatti in fase di compilazione utilizzando il controllo delle versioni semantiche
<a name="sample-buildspec-artifact-naming"></a>

 Questo campione contiene esempi di file di specifiche di compilazione che spiegano come specificare il nome di un artefatto che viene creato durante il processo di compilazione. Il nome specificato nel file di specifiche di compilazione può includere comandi Shell e variabili di ambiente al fine di renderlo univoco. Il nome specificato nel file di specifiche di compilazione sostituirà il nome immesso nella console al momento della creazione del progetto.

 Se si ripete il processo di compilazione più volte, l'utilizzo di un nome dell'artefatto specificato nel file di specifiche di compilazione farà in modo che i nomi dei file artefatti di output siano univoci. Ad esempio, è possibile utilizzare una data e un timestamp che sono inseriti all'interno del nome dell'artefatto durante il processo di compilazione. 

Per sostituire il nome dell'artefatto che si è inserito nella console con il nome presente nel file di specifiche di compilazione, basta seguire questi passaggi:

1.  Impostare il progetto di compilazione per sostituire il nome dell'artefatto con il nome presente nel file di specifiche di compilazione. 
   +  Se utilizzi la console per creare il progetto di compilazione, seleziona **Enable semantic versioning (Abilita funzione Versioni multiple semantica)**. Per ulteriori informazioni, consulta [Creare un progetto di compilazione (console)](create-project.md#create-project-console). 
   +  Se usi il AWS CLI, imposta su `overrideArtifactName` true nel file in formato JSON passato a. `create-project` Per ulteriori informazioni, consulta [Creazione di un progetto di compilazione (AWS CLI)](create-project.md#create-project-cli). 
   +  Se utilizzi l' AWS CodeBuild API, imposta il `overrideArtifactName` flag sull'`ProjectArtifacts`oggetto quando viene creato o aggiornato un progetto o viene avviata una build. 

1.  Specificare il nome nel file di specifiche di compilazione. Utilizza il seguente esempio di file di specifiche di compilazione come guida. 

 Questo esempio di Linux mostra come specificare il nome di un artefatto che comprende la data di creazione della compilazione. 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$(date +%Y-%m-%d)
```

 Questo esempio di Linux mostra come specificare il nome di un artefatto che utilizza una variabile di ambiente CodeBuild. Per ulteriori informazioni, consulta [Variabili di ambiente degli ambienti di compilazione](build-env-ref-env-vars.md). 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$AWS_REGION
```

 Questo esempio di Windows mostra come specificare il nome di un artefatto che comprende data e ora di creazione della compilazione. 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$(Get-Date -UFormat "%Y%m%d-%H%M%S")
```

 Questo esempio di Windows mostra come specificare il nome di un artefatto che utilizza una variabile dichiarata nel file buildspec e una variabile di ambiente. CodeBuild Per ulteriori informazioni, consulta [Variabili di ambiente degli ambienti di compilazione](build-env-ref-env-vars.md). 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$Env:AWS_REGION
```

 Per ulteriori informazioni, consulta [Riferimento alle specifiche di costruzione per CodeBuild](build-spec-ref.md). 