Freigeben über


Erstellen, Testen und Bereitstellen von Xcode-Apps

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

In dieser Schnellstartanleitung erfahren Sie, wie Sie Xcode-Projekte mit YAML-Pipelines in Azure Pipelines erstellen und bereitstellen.

Voraussetzungen

  • Eine Azure DevOps-Organisation und ein Projekt, in dem Sie die Berechtigung zum Erstellen von Pipelines und Bereitstellen von Apps haben.
  • Ein Xcode 9+-Projekt und eine App in einem GitHub-Repository. Weitere Informationen finden Sie unter Erstellen eines Xcode-Projekts für eine App.

Erstellen der Pipeline

Wichtig

Während GitHub-Verfahren werden Sie möglicherweise aufgefordert, eine GitHub-Dienstverbindung zu erstellen, oder werden zu GitHub umgeleitet, um sich anzumelden, Azure Pipelines zu installieren oder Azure Pipelines zu autorisieren. Folgen Sie den Anweisungen auf dem Bildschirm, um den Prozess abzuschließen. Weitere Informationen finden Sie unter Zugriff auf GitHub-Repositorys.

  1. Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Neue Pipeline oder Pipeline erstellen aus, falls diese Pipeline die erste Pipeline im Projekt ist.
  2. Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.
  3. Wählen Sie auf dem Bildschirm Repository auswählen das Repository für Ihr Xcode-Projekt aus.
  4. Wählen Sie auf dem Bildschirm Pipeline konfigurieren die Option Xcode aus.

Azure Pipelines stellt eine Startpipeline basierend auf der Xcode-Vorlage bereit. Überprüfen Sie den Code in azure-pipelines.yml.

Buildumgebung

Xcode ist auf den von Microsoft gehosteten macOS-Agents in Azure Pipelines vorinstalliert, sodass Sie keine Infrastruktur einrichten müssen. Die genauen Versionen von Xcode, die vorinstalliert sind, finden Sie unter „Software“ im Artikel „Von Microsoft gehostete Agents“.

Der pool-Knoten oben in der Datei azure-pipelines.yml wählt den entsprechenden Agentpool aus.

pool:
  vmImage: 'macOS-latest'

Xcode-Buildtask

Der Xcode-Task erstellt, testet oder archiviert einen Xcode-Arbeitsbereich unter macOS und kann optional eine App packen. Der Xcode-Schritt in der Startdatei azure-pipelines.yml erstellt das iOS-Projekt unter Verwendung des Standardschemas und ohne Packen für den Simulator. Sie können entsprechender Ihrer Projektkonfiguration Werte ändern und Parameter hinzufügen.

steps:
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
    xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath

Speichern und Ausführen der Pipeline

Wenn Sie mit der Überprüfung des Codes in azure-pipelines.yml fertig sind, wählen Sie Speichern und ausführen aus.

Screenshot: Schaltfläche „Speichern und ausführen“ in einer neuen YAML-Pipeline

Bearbeiten Sie optional die Commitnachricht, und geben Sie eine Beschreibung an. Wählen Sie dann erneut Speichern und ausführen aus, um die Datei azure-pipelines.yml in Ihr Repository zu committen und einen Build zu starten.

Auf der Buildausführungsseite werden Builddetails und der Fortschritt angezeigt. Wenn Sie Ihre Pipeline in Aktion sehen möchten, wählen Sie im unteren Teil der Seite Auftrag aus.

Sie verfügen jetzt über eine funktionierende YAML-Pipeline (azure-pipelines.yml) in Ihrem Repository, die Sie anpassen können.

Anpassen Ihrer Pipeline

Um Änderungen an Ihrer Pipeline vorzunehmen, wählen Sie auf der Pipelineseite Bearbeiten aus. In den folgenden Abschnitten werden einige gängige Methoden zum Anpassen Ihrer Xcode-Pipeline beschrieben.

Hinzufügen von Signier- und Bereitstellungstasks

Eine Xcode-App muss signiert und bereitgestellt werden, damit sie auf einem Gerät ausgeführt oder im App Store veröffentlicht werden kann. Beim Signierungs- und Bereitstellungsprozess wird Zugriff auf Ihr P12-Signaturzertifikat und ein oder mehrere Bereitstellungsprofile benötigt. Weitere Informationen finden Sie unter Signieren Ihrer mobilen App.

Um das Zertifikat und das Profil während eines Builds für Xcode verfügbar zu machen, fügen Sie Ihrer Pipeline die Tasks Apple-Zertifikat installieren und Apple-Bereitstellungsprofil installieren hinzu.

Verwenden einer Carthage-Umgebungsvariablen

Wenn Ihr Projekt Carthage mit einem privaten Carthage-Repository verwendet, können Sie die Authentifizierung mithilfe einer Umgebungsvariablen namens GITHUB_ACCESS_TOKEN mit dem Wert eines Tokens einrichten, das Zugriff auf das Repository hat. Carthage erkennt und verwendet diese Umgebungsvariable automatisch.

Fügen Sie das geheime Token nicht direkt zu Ihrer Pipeline-YAML hinzu. Wählen Sie stattdessen Variablen auf der Pipelineseite aus, um den Bereich Variablen zu öffnen und eine Variable für dieses Token zu erstellen. Aktivieren Sie unbedingt das Sperrsymbol, um den Wert der Variablen zu verschlüsseln. Weitere Informationen finden Sie unter Festlegen von Geheimnisvariablen.

Der folgende Pipelinecode verwendet eine Geheimnisvariable namens myGitHubAccessToken für den Wert der Umgebungsvariablen GITHUB_ACCESS_TOKEN.

- script: carthage update --platform iOS
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Testen auf von Azure gehosteten Geräten

Um Ihre App in einem gehosteten Lab mit iOS-Geräten in Visual Studio App Center zu testen, fügen Sie der Pipeline den Task App Center-Test hinzu.

Für diesen Task ist ein kostenloses Testkonto für App Center erforderlich, das nach 30 Tagen in ein kostenpflichtiges Konto umgewandelt werden muss, damit Sie das Testlab weiterhin verwenden können. Registrieren Sie sich für ein App Center-Konto, bevor Sie diesen Task verwenden.

Im folgenden Beispiel wird eine App Center-Testsammlung ausgeführt. Der Task verwendet eine Dienstverbindung, die Sie einrichten müssen.

Die vollständige Tasksyntax und -referenz finden Sie unter App Center-Testtask. Weitere Informationen finden Sie unter Verwenden von Azure DevOps für Benutzeroberflächentests.

- task: AppCenterTest@1
  inputs:
    appFile: path/myapp.ipa
    artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
    frameworkOption: 'appium'
    appiumBuildDirectory: test/upload
    serverEndpoint: 'My App Center service connection'
    appSlug: username/appIdentifier
    devices: 'devicelist'

Beibehalten von Artefakten mit dem Builddatensatz

Um Ihre iOS-AppStore-Paketdatei (IPA) mit dem Builddatensatz zu speichern oder sie in nachfolgenden Pipelines zu testen und bereitzustellen, fügen Sie Ihrer Pipeline die Tasks Dateien kopieren und Buildartefakte veröffentlichen hinzu. Weitere Informationen finden Sie unter Veröffentlichen und Herunterladen von Pipelineartefakten.

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Bereitstellen in App Center

Fügen Sie den Task App Center-Verteilung hinzu, um eine App an eine Gruppe von Testern oder Betabenutzern zu verteilen oder die App auf Intune oder den Apple App Store hochzustufen. Für den Task ist ein kostenloses App Center-Konto erforderlich, das kostenlos bleibt.

Im folgenden Beispiel wird eine App an Benutzer verteilt. Die vollständige Tasksyntax und -referenz finden Sie unter App Center-Verteilung. Weitere Informationen finden Sie unter Bereitstellen von Azure DevOps-Builds mit App Center.

- task: AppCenterDistribute@3
  inputs:
    serverEndpoint: 'AppCenter'
    appSlug: '$(APP_CENTER_SLUG)'
    appFile: '$(APP_FILE)' # Relative path from the repo root to the IPA file you want to publish
    symbolsOption: 'Apple'
    releaseNotesOption: 'input'
    releaseNotesInput: 'Here are the release notes for this version.'
    destinationType: 'groups'

Installieren der Apple App Store-Erweiterung und Bereitstellen im Apple App Store

Installieren Sie zum Automatisieren der Interaktion mit dem Apple App Store die Apple App Store-Erweiterung, und verwenden Sie dann die folgenden Tasks in Ihrer Pipeline. Standardmäßig authentifizieren sich diese Tasks bei Apple mit einer Dienstverbindung, die Sie konfigurieren müssen.

Fügen Sie den Task App Store Release hinzu, um die Veröffentlichung von Updates für vorhandene iOS TestFlight-Beta-Apps oder Produktions-Apps im App Store zu automatisieren.

Es gelten Einschränkungen bei der Verwendung dieses Tasks mit der Zwei-Faktor-Authentifizierung von Apple. Die Apple-Authentifizierung ist regionsspezifisch, und Fastlane-Sitzungstoken laufen schnell ab und müssen neu erstellt und konfiguriert werden.

- task: AppStoreRelease@1
  displayName: 'Publish to the App Store TestFlight track'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection' 
    appIdentifier: com.yourorganization.testapplication.etc
    ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
    shouldSkipWaitingForProcessing: true
    shouldSkipSubmission: true

Fügen Sie den Task App Store Promote hinzu, um die Höherstufung einer zuvor übermittelten App von iTunes Connect zum App Store zu automatisieren.

- task: AppStorePromote@1
  displayName: 'Submit to the App Store for review'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection'
    appIdentifier: com.yourorganization.testapplication.etc
    shouldAutoRelease: false