

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