

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Tutorial: Apple-Codesignatur mit Fastlane bei der CodeBuild Verwendung von S3 für die Zertifikatsspeicherung
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) ist ein beliebtes Open-Source-Automatisierungstool zur Automatisierung von Beta-Bereitstellungen und -Releases für Ihre iOS- und Android-Apps. Es erledigt alle mühsamen Aufgaben wie das Generieren von Screenshots, das Signieren von Code und die Veröffentlichung Ihrer Anwendung.

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

Um dieses Tutorial abzuschließen, müssen Sie zunächst Folgendes eingerichtet haben:
+ Ein AWS-Konto
+ Ein [Apple-Entwickler-Konto](https://developer.apple.com/)
+ Ein S3-Bucket zum Speichern von Zertifikaten
+ Fastlane ist in Ihrem Projekt installiert — [Anleitung](https://docs.fastlane.tools/getting-started/ios/setup/) zur Installation von Fastlane

## Schritt 1: Richten Sie Fastlane Match mit S3 auf Ihrem lokalen Computer ein
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) ist eines der [Fastlane-Tools](https://fastlane.tools/) und ermöglicht eine nahtlose Konfiguration für die Codesignatur sowohl in Ihrer lokalen Entwicklungsumgebung als auch in Ihrer lokalen Entwicklungsumgebung. CodeBuild Fastlane Match speichert alle Ihre Codesignaturzertifikate und Bereitstellungsprofile in einem Git repository/S3 Bucket/Google Cloud-Speicher und lädt bei Bedarf die erforderlichen Zertifikate und Profile herunter und installiert sie.

In dieser Beispielkonfiguration richten Sie einen Amazon S3 S3-Bucket ein und verwenden ihn als Speicher. 

****

1. Initialisieren Sie Match in Ihrem Projekt:

   ```
   fastlane match init
   ```

1. Wenn Sie dazu aufgefordert werden, wählen Sie S3 als Speichermodus.

1. Aktualisieren Sie Ihr `*Matchfile*`, um S3 zu verwenden:

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

## Schritt 2: Richten Sie Ihr Fastfile ein
<a name="sample-fastlane-S3-fastfile"></a>

Erstellen oder aktualisieren Sie Ihr `Fastfile` mit der folgenden Spur.

Wenn aktiviert CodeBuild, muss Fastlane Match jedes Mal ausgeführt werden, wenn Sie Ihre App erstellen und signieren. Der einfachste Weg, dies zu tun, besteht darin, die `match` Aktion zu der Lane hinzuzufügen, auf der Ihre App erstellt wird.

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

**Anmerkung**  
Stellen Sie sicher, dass `setup_ci` Sie den `before_all ` Abschnitt in erweitern, `Fastfile` damit die Match-Aktion korrekt funktioniert. Dadurch wird sichergestellt, dass ein temporärer Fastlane-Schlüsselbund mit den entsprechenden Berechtigungen verwendet wird. Wenn Sie dies nicht verwenden, kann es zu Build-Fehlern oder inkonsistenten Ergebnissen kommen. 



## Schritt 3: Führen Sie den `fastlane match` Befehl aus, um die entsprechenden Zertifikate und Profile zu generieren
<a name="sample-fastlane-S3-certificates"></a>

Der Fastlane-Match-Befehl für den angegebenen Typ (d. h. Entwicklung, Appstore, Adhoc, Enterprise) generiert das Zertifikat und das Profil, sofern sie nicht im Remote-Speicher verfügbar sind. Die Zertifikate und Profile werden von Fastlane in S3 gespeichert.

```
bundle exec fastlane match appstore
```

Die Befehlsausführung erfolgt interaktiv und Fastlane fordert Sie auf, eine Passphrase für die Entschlüsselung der Zertifikate festzulegen.

## Schritt 4: Erstellen Sie die Anwendungsdatei für Ihr Projekt
<a name="sample-fastlane-S3-appfile"></a>

Erstellen Sie die Anwendungsdatei entsprechend Ihrem Projekt oder fügen Sie sie hinzu.

****

1. Erstellen oder fügen Sie [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/) [und [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) basierend auf Ihren Projekt-Build-Anforderungen hinzu.

1. Übernehmen Sie die Änderungen in Ihr Remote-Repository

## Schritt 5: Umgebungsvariablen in Secrets Manager erstellen
<a name="sample-fastlane-S3-secrets"></a>

Erstellen Sie zwei Geheimnisse zum Speichern des Fastlane-Sitzungscookies und der passenden Passphrase. Weitere Informationen zum Erstellen von Geheimnissen in Secrets Manager finden Sie unter [Create an AWS Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Greifen Sie wie folgt auf Ihr Fastlane-Sitzungscookie zu.

   1. Geheimer Schlüssel - `FASTLANE_SESSION`

   1. Geheimer Wert — Sitzungscookie, das durch die Ausführung des folgenden Befehls auf Ihrem lokalen Computer generiert wurde.
**Anmerkung**  
Dieser Wert ist nach der Authentifizierung in einer lokalen Datei verfügbar:`~/.fastlane/spaceship/my_appleid_username/cookie`.

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

1. Fastlane Match-Passphrase — Damit Fastlane Match die im S3-Bucket gespeicherten Zertifikate und Profile entschlüsseln kann, müssen Sie die Verschlüsselungspassphrase, die Sie im Match-Setup-Schritt konfiguriert haben, zu den Umgebungsvariablen des Projekts hinzufügen. CodeBuild

   1. Geheimer Schlüssel - `MATCH_PASSWORD`

   1. Geheimer Wert -*<match passphrase to decrypt certificates>*. Die Passphrase wird bei der Generierung der Zertifikate in Schritt 3 festgelegt.

**Anmerkung**  
Denken Sie beim Erstellen der oben genannten Geheimnisse in Secrets Manager daran, einen geheimen Namen mit dem folgenden Präfix anzugeben: `/CodeBuild/`

## Schritt 6: Erstellen Sie eine Rechenflotte
<a name="sample-fastlane-S3-fleet"></a>

Erstellen Sie die Rechenflotte für Ihr Projekt.

****

1. Gehen Sie in der Konsole zu CodeBuild und erstellen Sie eine neue Rechenflotte.

1. Wählen Sie „macOS“ als Betriebssystem und wählen Sie einen geeigneten Computertyp und ein entsprechendes Image aus.

## Schritt 7: Erstellen Sie ein Projekt in CodeBuild
<a name="sample-fastlane-S3-project"></a>

Erstellen Sie Ihr Projekt in CodeBuild.



****

1. Öffnen Sie die AWS CodeBuild Konsole unter [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md).

1. Richten Sie Ihren Quellanbieter ein (z. B. GitHub,). CodeCommit Dies ist das Quell-Repository für iOS-Projekte und kein Zertifikats-Repository.

1.  In **Environment** (Umgebung): 
   + Wählen Sie **Reservierte Kapazität**.
   + Wählen Sie für **Flotte** die oben erstellte Flotte aus.
   + Geben Sie den Namen der Servicerolle an, die für Sie erstellt CodeBuild werden soll.
   + Geben Sie die folgenden Umgebungsvariablen an.
     + Name:`MATCH_PASSWORD`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN wurde in Schritt 5 für MATCH\$1PASSWORD erstellt)
     + Name:`FASTLANE_SESSION`, Wert:*<secrets arn>*, Typ: Secrets Manager (Secrets ARN, erstellt in Schritt 5 für FASTLANE\$1SESSION)

1. Fügen Sie in **Buildspec Folgendes hinzu**:

   ```
   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)
   ```

## Schritt 8: Konfigurieren Sie die IAM-Rolle
<a name="sample-fastlane-S3-role"></a>

Stellen Sie nach der Erstellung des Projekts sicher, dass die CodeBuild Servicerolle Ihres Projekts über Berechtigungen für den Zugriff auf den S3-Bucket verfügt, der die Zertifikate enthält. Fügen Sie der Rolle die folgende Richtlinie hinzu:

------
#### [ 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/*"
        }
    ]
}
```

------

## Schritt 9: Führen Sie den Build aus
<a name="sample-fastlane-S3-run"></a>

Führen Sie den Build aus. Sie können den Build-Status überprüfen und sich anmelden CodeBuild.

Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.

## Fehlerbehebung
<a name="sample-fastlane-S3-troubleshooting"></a>
+ Wenn beim Abrufen von Zertifikaten Probleme auftreten, stellen Sie sicher, dass Ihre IAM-Berechtigungen für den S3-Zugriff korrekt eingerichtet sind.
+ Wenn bei der Entschlüsselung von Zertifikaten Probleme auftreten, stellen Sie sicher, dass Sie in der Umgebungsvariablen MATCH\$1PASSWORD die richtige Passphrase angeben.
+ Stellen Sie bei Problemen mit der Codesignatur sicher, dass Ihr Apple Developer-Konto über die erforderlichen Zertifikate und Profile verfügt und dass die Bundle-ID in Ihrem Xcode-Projekt mit der in Ihrem Bereitstellungsprofil übereinstimmt.

## Sicherheitsüberlegungen
<a name="sample-fastlane-considerations"></a>

Im Folgenden finden Sie Sicherheitsüberlegungen für dieses Tutorial.
+ Stellen Sie sicher, dass Ihr S3-Bucket über die entsprechenden Sicherheitseinstellungen verfügt, einschließlich Verschlüsselung im Ruhezustand. Stellen Sie insbesondere sicher, dass der Bucket keinen öffentlichen Zugriff hat, und beschränken Sie den Zugriff nur CodeBuild auf das System, für das ein Zugriff erforderlich ist.
+ Erwägen Sie AWS Secrets Manager die Verwendung von MATCH\$1PASSWORD und FASTLANE\$1SESSION zum Speichern vertraulicher Informationen.

Dieses Beispiel bietet eine Einrichtung für die iOS-Codesignatur mit Fastlane CodeBuild unter Verwendung von Amazon S3 für die Zertifikatsspeicherung. Möglicherweise müssen Sie einige Schritte an Ihre spezifischen Projektanforderungen und Ihre CodeBuild Umgebung anpassen. Dieser Ansatz nutzt AWS Dienste für mehr Sicherheit und Integration innerhalb des AWS Ökosystems.