

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

# Tutorial: crea una pipeline con cui creare e testare la tua app Android AWS Device Farm
<a name="tutorials-codebuild-devicefarm"></a>

Puoi utilizzarla AWS CodePipeline per configurare un flusso di integrazione continuo in cui la tua app viene creata e testata ogni volta che viene inviato un commit. Questo tutorial mostra come creare e configurare una pipeline per creare e testare la tua app Android con codice sorgente in un GitHub repository. La pipeline rileva l'arrivo di un nuovo GitHub commit e quindi la utilizza [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)per creare l'app e [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) per testarlo.

**Importante**  
Come parte della creazione di una pipeline nella console, per gli artefatti verrà utilizzato un bucket di artefatti S3. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso da quello della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di utenti sicuri e affidabili. Account AWS 

**Importante**  
Molte delle azioni che aggiungi alla pipeline in questa procedura coinvolgono AWS risorse che devi creare prima di creare la pipeline. AWS le risorse per le tue azioni di origine devono sempre essere create nella stessa AWS regione in cui crei la pipeline. Ad esempio, se crei la pipeline nella regione Stati Uniti orientali (Ohio), il tuo CodeCommit repository deve trovarsi nella regione Stati Uniti orientali (Ohio).   
Puoi aggiungere azioni interregionali quando crei la pipeline. AWS le risorse per le azioni interregionali devono trovarsi nella stessa AWS regione in cui intendi eseguire l'azione. Per ulteriori informazioni, consulta [Aggiungere un'azione interregionale in CodePipeline](actions-create-cross-region.md).

Puoi provarlo utilizzando l'app Android esistente e le definizioni di test oppure puoi utilizzare l'[app di esempio e le definizioni di test fornite da Device Farm](https://github.com/aws-samples/aws-device-farm-sample-app-for-android).

**Prima di iniziare**

1. Accedi alla AWS Device Farm console e scegli **Crea un nuovo progetto**.

1. Scegliere il progetto. Nel browser, copiare l'URL del nuovo progetto. L'URL contiene l'ID del progetto. 

1. Copiare e conservare questo ID del progetto. Viene utilizzato quando si crea la pipeline in CodePipeline.

   Ecco un URL di esempio per un progetto. Per estrarre l'ID del progetto, copiare il valore dopo `projects/`. In questo esempio l'ID del prodotto è `eec4905f-98f8-40aa-9afc-4c1cfexample`.

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Configura CodePipeline per utilizzare i test Device Farm
<a name="codepipeline-configure-tests"></a>

1. 

   Aggiungi e esegui il commit di un file chiamato [https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)nella radice del codice dell'app e invialo al tuo repository. CodeBuild utilizza questo file per eseguire comandi e accedere agli artefatti necessari per creare l'app.

   ```
   version: 0.2
   
   phases:
     build:
       commands:
         - chmod +x ./gradlew
         - ./gradlew assembleDebug
   artifacts:
     files:
        - './android/app/build/outputs/**/*.apk'
     discard-paths: yes
   ```

1. (Facoltativo) Se [utilizzi Calabash o Appium per testare la tua applicazione](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types-intro.html), aggiungi il file di definizione del test al repository. In una fase successiva, puoi configurare Device Farm per utilizzare le definizioni per eseguire la tua suite di test. 

   Se utilizzi i test integrati di Device Farm, puoi saltare questo passaggio.

1. Per creare la pipeline e aggiungere una fase di origine, procedi nel seguente modo:

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

   1. Nella pagina **Welcome (Benvenuto)**, pagina **Getting started (Nozioni di base)** o pagina **Pipelines (Pipeline)**, scegliere **Create pipeline (Crea pipeline)**.

   1. Nella pagina **Passaggio 1: Scegli l'opzione di creazione**, in **Opzioni di creazione**, scegli l'opzione **Crea pipeline personalizzata**. Scegli **Next (Successivo)**.

   1. Nella pagina **Passaggio 2: Scegli le impostazioni della pipeline**, in Nome **pipeline, inserisci il nome** della pipeline.

   1. CodePipeline fornisce condotte di tipo V1 e V2, che differiscono per caratteristiche e prezzo. Il tipo V2 è l'unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta i tipi di [pipeline.](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel) Per informazioni sui prezzi di CodePipeline, consulta la sezione [Prezzi](https://aws.amazon.com/codepipeline/pricing/).

   1. Alla voce **Service role (Ruolo del servizio)**, lasciare selezionato **New service role (Nuovo ruolo del servizio)** e lasciare immutata la voce **Role name (Nome ruolo)**. È anche possibile scegliere di utilizzare un ruolo di servizio esistente, se disponibile.
**Nota**  
Se utilizzi un ruolo CodePipeline di servizio creato prima di luglio 2018, devi aggiungere le autorizzazioni per Device Farm. A tale scopo, apri la console IAM, trova il ruolo, quindi aggiungi le seguenti autorizzazioni alla policy del ruolo. Per ulteriori informazioni, consulta [Aggiungi le autorizzazioni al ruolo di servizio CodePipeline](how-to-custom-role.md#how-to-update-role-new-services).  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

   1. Lasciare i valori predefiniti delle impostazioni in **Advanced settings (Impostazioni avanzate)**, quindi scegliere **Next (Successivo)**.

   1. Nella pagina **Step 3: Aggiungi la fase di origine**, in **Source provider**, scegli **GitHub (tramite GitHub app)**.

   1. In **Connessione**, scegli una connessione esistente o creane una nuova. Per creare o gestire una connessione per l'azione GitHub sorgente, consulta[GitHub connessioni](connections-github.md).

   1. In **Repository**, scegliere il repository di origine.

   1. In **Branch (Ramificazione)**, scegliere la ramificazione che si desidera utilizzare.

   1. Lascia le impostazioni predefinite rimanenti per l'azione di origine. Scegli **Next (Successivo)**.

1. Nel **passaggio 4: Aggiungi fase di compilazione, aggiungi una fase** di compilazione:

   1. In **Build provider**, scegli **Altri fornitori di build**, quindi scegli **AWS CodeBuild**. Consenti a **Region (Regione)** di preimpostarsi sulla regione della pipeline.

   1. Seleziona **Crea progetto**.

   1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione.

   1. In **Environment image (Immagine ambiente)**, scegli **Managed image (Immagine gestita)**. In **Operating system** (Sistema operativo), seleziona **Ubuntu**.

   1. In **Runtime**, seleziona **Standard**. **Per **Image**, scegli:5.0aws/codebuild/standard.**

      CodeBuild utilizza questa immagine del sistema operativo, su cui è installato Android Studio, per creare l'app.

   1. Per **Ruolo di servizio**, scegli il ruolo CodeBuild di servizio esistente o creane uno nuovo.

   1. Per **Build specifications (Compila specifiche)**, scegli **Use a buildspec file (Usa un file buildspec)**.

   1. Scegli **Continua a CodePipeline**. Questo ritorna alla CodePipeline console e crea un CodeBuild progetto che utilizza il file `buildspec.yml` nel tuo repository per la configurazione. Il progetto di compilazione utilizza un ruolo di servizio per gestire le Servizio AWS autorizzazioni. Questa operazione potrebbe richiedere un paio di minuti.

   1. Scegli **Next (Successivo)**.

1. Nel **passaggio 5: aggiungi la fase di test**, scegli **Ignora fase di test**, quindi accetta il messaggio di avviso scegliendo nuovamente **Ignora**. 

   Scegli **Next (Successivo)**.

1. **Nella pagina Passaggio 6: Aggiungi fase di distribuzione, scegli Ignora fase** **di distribuzione****, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora.** Scegli **Next (Successivo)**.

1. **Nel **Passaggio 7: Revisione**, scegli Crea pipeline.** Dovresti visualizzare uno schema che mostra le fasi di origine e compilazione.

1. Aggiungi un'azione di test di Device Farm alla tua pipeline:

   1. In alto a destra, scegli **Edit (Modifica)**.

   1. In fondo al diagramma, scegliere **\$1 Add stage (\$1 Aggiungi fase)** In **Nome fase** immetti un nome, ad esempio **Test**.

   1. Scegliere **\$1 Add action group (\$1 Aggiungi gruppo di operazioni)**.

   1. Alla voce **Action name (Nome operazione)**, inserire un nome. 

   1. In **Action provider**, scegli **AWS Device Farm**. Consenti a **Region (Regione)** di preimpostarsi sulla regione della pipeline.

   1. In **Input artifacts (Artefatti di input)**, scegli l'artefatto di input che corrisponde all'artefatto di output della fase precedente alla fase di test, ad esempio `BuildArtifact`. 

      Nella AWS CodePipeline console, puoi trovare il nome dell'elemento di output per ogni fase passando il mouse sull'icona delle informazioni nel diagramma della pipeline. **Se la pipeline verifica l'app direttamente dalla fase Source, scegli. **SourceArtifact**** Se la pipeline include una fase di **creazione**, scegli. **BuildArtifact**

   1. Nel **ProjectId**, inserisci l'ID del tuo progetto Device Farm. Utilizzare la procedura all'inizio di questo tutorial per recuperare l'ID del progetto.

   1. In **DevicePoolArn**, inserisci l'ARN per il pool di dispositivi. Per ottenere il pool di dispositivi disponibile ARNs per il progetto, incluso l'ARN per i dispositivi principali, utilizza la AWS CLI per immettere il seguente comando: 

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. **In **AppType**, inserisci Android.**

      Di seguito è riportato un elenco di valori validi per **AppType**:
      + **iOS**
      + **Android**
      + **App**

   1. In **App**, inserisci il percorso del pacchetto dell'applicazione compilata. Il percorso è relativo alla cartella principale dell'artefatto di input della fase di sviluppo. Di solito, questo percorso è simile a `app-release.apk`.

   1. In **TestType**, inserisci il tipo di test, quindi in **Test**, inserisci il percorso del file di definizione del test. Il percorso è relativo alla cartella principale dell'artefatto di input del test.

      Di seguito è riportato un elenco di valori validi per **TestType**:
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTNG**
      + **NODO\$1APPIUM**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTNG**
      + **NODO APPIUM\$1WEB**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **BUILTIN\$1FUZZ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**Nota**  
I nodi di ambiente personalizzati non sono supportati.

   1. Nei campi rimanenti, inserire la configurazione appropriata per il test e il tipo di applicazione.

   1. (Facoltativo) IN **Advanced (Avanzate)**, fornire informazioni di configurazione per la sessione di test.

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

   1. Nella fase che stai modificando, scegli **Done (Fatto)**. Nel riquadro AWS CodePipeline , scegli **Save (Salva)** e quindi scegli **Save (Salva)** sul messaggio di avviso.

   1. Per inviare le modifiche e avviare una compilazione tramite pipeline, scegliere **Release change (Rilascia modifica)** e quindi scegliere **Release (Rilascia)**.