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.
- Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Neue Pipeline oder Pipeline erstellen aus, falls diese Pipeline die erste Pipeline im Projekt ist.
- Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.
- Wählen Sie auf dem Bildschirm Repository auswählen das Repository für Ihr Xcode-Projekt aus.
- 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.
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
Verwandte Erweiterungen
- Apple App Store von Microsoft
- Codified Security von Codified Security
- MacinCloud von Moboware Inc.
- Mobile App Tasks for iOS and Android von James Montemagno
- Mobile Testing Lab von Perfecto Mobile
- Raygun von Raygun
- React Native von Microsoft
- Version Setter von Tom Gilder