Compilare, testare e distribuire app Xcode
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Questa guida introduttiva 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 Pipeline>nuova pipeline o Crea pipeline 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 nella parte superiore del 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 facoltativamente può 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.
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
Salvare ed eseguire la pipeline
Al termine della revisione del codice in azure-pipelines.yml, selezionare Salva ed esegui.
Facoltativamente, modificare il messaggio 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 si vuole controllare la pipeline in azione, selezionare Processo 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.
Aggiungere attività di firma e provisioning
Un'app Xcode deve essere firmata e di cui è stato effettuato il provisioning per poter essere eseguita in un dispositivo o pubblicarla nell'App Store. Il processo di firma e provisioning deve accedere al certificato di firma P12 e a uno o più profili di provisioning. Per altre informazioni, vedere Firmare l'app per dispositivi mobili.
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.
Usare una variabile di ambiente Carthage
Se il progetto usa Carthage con un repository carthage privato, è possibile 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. Selezionare invece Variabili nella pagina della pipeline per aprire il riquadro Variabili e creare una variabile per questo token. Assicurarsi di abilitare l'icona di blocco per crittografare il valore della variabile. 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
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Testare nei dispositivi ospitati in Azure
Per testare l'app in un lab ospitato di dispositivi iOS in Visual Studio App Center, aggiungere l'attività Test di App Center alla pipeline.
Questa attività richiede un account di valutazione gratuito di App Center , che deve essere convertito in a pagamento dopo 30 giorni per continuare a usare il lab di test. Iscriversi per ottenere un account App Center prima di usare questa attività.
L'esempio seguente esegue un gruppo di test di App Center. L'attività usa una connessione al servizio che è necessario configurare.
Per la sintassi completa delle attività e informazioni di riferimento, vedere Attività test di App Center. Per altre informazioni, vedere Uso di Azure DevOps per il test dell'interfaccia utente.
- 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'
Mantenere gli artefatti con il record di compilazione
Per archiviare il file ipA (AppStore Package) iOS con il record di compilazione o il test e distribuirlo nelle pipeline successive, aggiungere le attività Copia file e Pubblica artefatti di compilazione alla pipeline. Per altre informazioni, vedere Pubblicare e scaricare gli artefatti della pipeline.
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Distribuire in App Center
Per distribuire un'app a un gruppo di tester o utenti beta o promuovere l'app in Intune o in Apple App Store, aggiungere l'attività Distribuzione app Center. L'attività richiede un account App Center gratuito che rimane gratuito.
L'esempio seguente distribuisce un'app agli utenti. Per informazioni di riferimento e sintassi completa delle attività, vedere App Center Distribute. Per altre informazioni, vedere Distribuire build di Azure DevOps con 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'
Installare l'estensione Apple App Store e distribuirla in 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 iOS TestFlight esistenti o alle app di produzione nell'App Store, aggiungere l'attività Versione dell'App Store.
Esistono limitazioni per l'uso di questa attività con l'autenticazione a due fattori di Apple. L'autenticazione Apple è specifica dell'area e i token di sessione fastlane scadono rapidamente e devono essere ricreati e riconfigurati.
- 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à Promuovere l'App Store.
- 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
- Sicurezza codificata dalla sicurezza codificata
- 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