Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Questo articolo illustra come compilare e distribuire progetti Xcode con pipeline YAML in Azure Pipelines.
Prerequisiti
- Un'organizzazione e un progetto di Azure DevOps in cui si dispone dell'autorizzazione per creare pipeline e distribuire app.
- Un progetto e un'app Xcode 9+ in un repository GitHub. Per altre informazioni, vedere Creazione di un progetto Xcode per un'app.
Creare la pipeline
Importante
Durante le procedure di GitHub, potrebbe essere richiesto di creare una connessione al servizio GitHub o di essere reindirizzati a GitHub per accedere, installare Azure Pipelines o autorizzare Azure Pipelines. Seguire le istruzioni visualizzate per completare il processo. Per altre informazioni, vedere Accedere ai repository GitHub.
- Nel progetto Azure DevOps selezionare nuova pipeline o > se la pipeline è la prima nel progetto.
- Selezionare GitHub come percorso del codice sorgente.
- Nella schermata Selezionare un repository selezionare il repository per il progetto Xcode.
- Nella schermata Configura pipeline selezionare Xcode.
Azure Pipelines offre una pipeline iniziale basata sul modello Xcode . Esaminare il codice in azure-pipelines.yml.
Ambiente di compilazione
Xcode è preinstallato negli agenti macOS ospitati da Microsoft in Azure Pipelines, quindi non è necessario configurare alcuna infrastruttura. Per le versioni esatte di Xcode preinstallate, vedere Software degli agenti ospitati da Microsoft.
Il pool nodo in cima al file di Azure-pipelines.yml seleziona il pool di agenti appropriato.
pool:
vmImage: 'macOS-latest'
Attività di compilazione Xcode
L'attività Xcode compila, testa o archivia un'area di lavoro Xcode in macOS e può facoltativamente creare un pacchetto di un'app. Il passaggio Xcode nel file starter azure-pipelines.yml compila il progetto iOS usando lo schema predefinito, per il simulatore e senza creazione di pacchetti. È possibile modificare i valori e aggiungere parametri in modo che corrispondano alla configurazione del progetto.
Compilazione di sviluppo:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphonesimulator'
configuration: 'Debug'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath
Compilazione di produzione per App Store:
Per le versioni di produzione, specificare una versione Xcode esplicita, lo schema dell'app e la configurazione release:
steps:
- task: Xcode@5
inputs:
actions: 'build'
scheme: 'YourAppScheme'
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
xcodeVersion: '14'
packageApp: true
exportPath: '$(build.artifactStagingDirectory)'
exportOptions: 'automatic'
Differenze principali per la produzione:
-
xcodeVersion: specificare una versione fissa ,ad esempio
'14', anziché'default'per le build coerenti e riproducibili. - scheme: sostituire la stringa vuota con il nome effettivo dello schema dell'app.
-
sdk: usare
'iphoneos'per le compilazioni dei dispositivi; usare'iphonesimulator'per le compilazioni del simulatore. -
configurazione: usare
'Release'per la produzione; usare'Debug'per lo sviluppo. -
packageApp: impostare su
trueper generare un.ipafile per la distribuzione. - exportPath: indirizza l'output del pacchetto alla directory di staging della build per la pubblicazione di artefatti.
Salvare ed eseguire la pipeline
Al termine della revisione del codice in azure-pipelines.yml, selezionare Salva ed esegui.
Facoltativamente, modificare il messaggio di commit e fornire una descrizione. Selezionare quindi Salva ed esegui di nuovo per eseguire il commit del file azure-pipelines.yml nel repository e avviare una compilazione.
La pagina di esecuzione della compilazione mostra i dettagli e lo stato di avanzamento della compilazione. Se vuoi guardare la pipeline in azione, seleziona Job nella parte inferiore della pagina.
È ora disponibile una pipeline YAML funzionante, azure-pipelines.yml, nel repository pronto per la personalizzazione.
Personalizzare la pipeline
Per apportare modifiche alla pipeline, selezionare Modifica nella pagina della pipeline. Le sezioni seguenti descrivono alcuni modi comuni per personalizzare la pipeline Xcode in base alle esigenze specifiche:
- Firma e provisioning: Obbligatorio per la distribuzione su dispositivi fisici o sull'App Store.
- Gestione delle dipendenze: Configurare l'autenticazione per i repository privati.
- Gestione degli artefatti: Archiviare gli output di compilazione per il test e la distribuzione.
- Distribuzione: Automatizzare la versione in TestFlight o nell'App Store.
Aggiungere attività di firma e provisioning
Per eseguire l'app Xcode in un dispositivo fisico o pubblicarla nell'App Store, è necessario firmare ed effettuare il provisioning dell'app. Questo processo implica l'uso di un certificato di firma P12 (credenziali di sicurezza che verifica l'identità dell'app) e profili di provisioning (che autorizzano l'app per dispositivi o distribuzioni specifici). Per altre informazioni, vedere Firmare la tua app mobile.
Per rendere il certificato e il profilo disponibili per Xcode durante una compilazione, aggiungere le attività Installa certificato Apple e Installa profilo di provisioning Apple alla pipeline.
Gestire le dipendenze
Il progetto Xcode potrebbe usare i gestori delle dipendenze per gestire librerie e framework di terze parti. Le sezioni seguenti descrivono come configurare l'autenticazione per i repository privati con diversi gestori delle dipendenze.
Swift Package Manager
Swift Package Manager (SPM) è il gestore delle dipendenze nativo di Apple ed è integrato direttamente in Xcode. Per i progetti che usano SPM con pacchetti privati, è necessario configurare l'autenticazione Git.
Se i pacchetti Swift privati sono ospitati in GitHub, configurare l'autenticazione usando una variabile di ambiente denominata GITHUB_ACCESS_TOKEN con un valore di un token di accesso personale che ha accesso al repository.
Non aggiungere il token segreto direttamente alla pipeline YAML, perché questa azione lo espone nel codice sorgente. Per altre informazioni, vedere Impostare le variabili segrete.
Il codice della pipeline seguente usa una variabile privata denominata myGitHubAccessToken per l'autenticazione durante la risoluzione delle dipendenze del pacchetto Swift:
- task: Xcode@5
inputs:
actions: 'build'
scheme: ''
sdk: 'iphoneos'
configuration: 'Release'
xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Per i pacchetti privati ospitati in Azure Repos o in altri provider Git, configurare le credenziali Git appropriate prima del passaggio di compilazione.
Baccelli di cacao
Se il progetto usa CocoaPods, usare l'attività CocoaPods per installare le dipendenze.
- task: CocoaPods@0
inputs:
workingDirectory: '$(System.DefaultWorkingDirectory)'
forceRepo: false
Cartagine
Se il progetto usa Carthage (un gestore delle dipendenze per i progetti iOS/macOS) con un repository carthage privato, configurare l'autenticazione usando una variabile di ambiente denominata GITHUB_ACCESS_TOKEN con un valore di token che ha accesso al repository. Carthage rileva e usa automaticamente questa variabile di ambiente.
Non aggiungere il token segreto direttamente alla pipeline YAML, perché questa azione lo espone nel codice sorgente. Per altre informazioni, vedere Impostare le variabili segrete.
Il codice della pipeline seguente usa una variabile segreta denominata myGitHubAccessToken per il valore della GITHUB_ACCESS_TOKEN variabile di ambiente.
- script: carthage update --platform iOS
displayName: 'Update Carthage dependencies'
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Testare nei dispositivi ospitati in Azure
Visual Studio App Center è stato ritirato il 31 marzo 2025. Informazioni sulle alternative consigliate.
Mantenere gli artefatti con il record di build
Per archiviare il file del pacchetto dell'AppStore (IPA) iOS con il record di compilazione o per testarlo e distribuirlo nelle pipeline successive, aggiungere alla pipeline le attività Copia file e Pubblica artefatti della pipeline.
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(build.artifactStagingDirectory)'
artifact: 'drop'
Pubblicare su Apple App Store o TestFlight
Per distribuire un'app ai tester o agli utenti beta, usare TestFlight di Apple o distribuirla direttamente nell'App Store. Vedere la sezione seguente per la distribuzione di Apple App Store.
Per il test beta e il feedback degli utenti, è consigliabile usare:
- Apple TestFlight
- Piattaforme di test beta di terze parti, ad esempio Firebase App Distribution
Installare l'estensione Apple App Store e distribuirla sull'Apple App Store
Per automatizzare l'interazione con Apple App Store, installare l'estensione Apple App Store e quindi usare le attività seguenti nella pipeline. Per impostazione predefinita, queste attività eseguono l'autenticazione ad Apple usando una connessione al servizio che è necessario configurare.
Per automatizzare il rilascio degli aggiornamenti alle app beta esistenti TestFlight iOS o alle app di produzione nell'App Store, aggiungere l'attività App Store Release.
Esistono limitazioni quando si usa questa attività con l'autenticazione a due fattori di Apple. L'autenticazione Apple è specifica dell'area e i token di sessione fastlane (credenziali temporanee usate per l'autenticazione con Apple) scadono rapidamente e devono essere ricreati e riconfigurati periodicamente.
- 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
Per automatizzare la promozione di un'app inviata in precedenza da iTunes Connect all'App Store, aggiungere l'attività App Store Promuovere.
- 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
Estensioni correlate
- Apple App Store da Microsoft
- Codified Security di Codified Security
- MacinCloud di Moboware Inc.
- Attività di app per dispositivi mobili per iOS e Android da James Montemagno
- Lab di test per dispositivi mobili da Perfecto Mobile
- Raygun di Raygun
- React Native da Microsoft
- Version Setter di Tom Gilder