Share via


Xcode-apps bouwen, testen en implementeren

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

Deze quickstart laat zien hoe u Xcode-projecten bouwt en implementeert met YAML-pijplijnen in Azure Pipelines.

Vereisten

  • Een Azure DevOps-organisatie en -project waar u gemachtigd bent om pijplijnen te maken en apps te implementeren.
  • Een Xcode 9+ project en app in een GitHub-opslagplaats. Zie Een Xcode-project voor een app maken voor meer informatie.

Maak de pijplijn

Belangrijk

Tijdens GitHub-procedures wordt u mogelijk gevraagd om een GitHub-serviceverbinding te maken of om te worden omgeleid naar GitHub om u aan te melden, Azure Pipelines te installeren of Azure Pipelines te autoriseren. Volg de instructies op het scherm om het proces te voltooien. Zie Toegang tot GitHub-opslagplaatsen voor meer informatie.

  1. Selecteer in uw Azure DevOps-project pijplijnen>een nieuwe pijplijn of maak een pijplijn als deze pijplijn de eerste is in het project.
  2. Selecteer GitHub als de locatie van uw broncode.
  3. Selecteer in het scherm Een opslagplaats selecteren de opslagplaats voor uw Xcode-project.
  4. Selecteer Xcode in het scherm Uw pijplijn configureren.

Azure Pipelines biedt een starterspijplijn op basis van de Xcode-sjabloon . Controleer de code in azure-pipelines.yml.

Omgeving bouwen

Xcode is vooraf geïnstalleerd op de door Microsoft gehoste macOS-agents in Azure Pipelines, dus u hoeft geen infrastructuur in te stellen. Zie de software van door Microsoft gehoste agents voor de exacte versies van Xcode die vooraf zijn geïnstalleerd.

Het pool knooppunt boven aan het azure-pipelines.yml-bestand selecteert de juiste agentgroep.

pool:
  vmImage: 'macOS-latest'

Xcode-buildtaak

De Xcode-taak bouwt, test of archiveert een Xcode-werkruimte in macOS en kan eventueel een app verpakken. Met de Xcode-stap in het startersbestand azure-pipelines.yml wordt het iOS-project gebouwd met behulp van het standaardschema, voor de simulator en zonder verpakking. U kunt waarden wijzigen en parameters toevoegen die overeenkomen met uw projectconfiguratie.

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

De pijplijn opslaan en uitvoeren

Wanneer u klaar bent met het controleren van de code in azure-pipelines.yml, selecteert u Opslaan en uitvoeren.

Schermopname van de knop Opslaan en uitvoeren in een nieuwe YAML-pijplijn.

Bewerk desgewenst het doorvoerbericht en geef een beschrijving op. Selecteer Vervolgens Opslaan en opnieuw uitvoeren om het azure-pipelines.yml-bestand door te voeren in uw opslagplaats en een build te starten.

Op de pagina voor het uitvoeren van de build worden details en voortgang van de build weergegeven. Als u de pijplijn in actie wilt bekijken, selecteert u Taak in het onderste gedeelte van de pagina.

U hebt nu een werkende YAML-pijplijn, azure-pipelines.yml, in uw opslagplaats die klaar is om aan te passen.

Uw pijplijn aanpassen

Als u wijzigingen wilt aanbrengen in uw pijplijn, selecteert u Bewerken op de pagina Pijplijn. In de volgende secties worden enkele algemene manieren beschreven om uw Xcode-pijplijn aan te passen.

Ondertekenings- en inrichtingstaken toevoegen

Een Xcode-app moet zijn ondertekend en ingericht om te kunnen worden uitgevoerd op een apparaat of om te kunnen publiceren naar de App Store. Het ondertekenings- en inrichtingsproces moet toegang hebben tot uw P12-handtekeningcertificaat en een of meer inrichtingsprofielen. Zie Uw mobiele app ondertekenen voor meer informatie.

Als u het certificaat en profiel beschikbaar wilt maken voor Xcode tijdens een build, voegt u de taken Apple-certificaat installeren en Apple Provisioning Profile installeren toe aan uw pijplijn.

Een Omgevingsvariabele voorThaags gebruiken

Als uw project Gebruikmaakt van Carthage met een privéopslagplaats van Windows, kunt u verificatie instellen met behulp van een omgevingsvariabele met de naam GITHUB_ACCESS_TOKEN een waarde van een token dat toegang heeft tot de opslagplaats. Elke omgevingsvariabele detecteert en gebruikt deze omgevingsvariabele automatisch.

Voeg het geheime token niet rechtstreeks toe aan uw pijplijn YAML. Selecteer in plaats daarvan Variabelen op de pijplijnpagina om het deelvenster Variabelen te openen en een variabele voor dit token te maken. Zorg ervoor dat u het vergrendelingspictogram inschakelt om de waarde van de variabele te versleutelen. Zie Geheime variabelen instellen voor meer informatie.

De volgende pijplijncode maakt gebruik van een geheime variabele met de naam myGitHubAccessToken van de GITHUB_ACCESS_TOKEN omgevingsvariabele.

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

Testen op door Azure gehoste apparaten

Als u uw app wilt testen in een gehost lab met iOS-apparaten in Visual Studio App Center, voegt u de App Center-testtaak toe aan uw pijplijn.

Voor deze taak is een gratis proefaccount voor App Center vereist, dat na 30 dagen moet worden geconverteerd naar betaald om het testlab te kunnen blijven gebruiken. Meld u aan voor een App Center-account voordat u deze taak gebruikt.

In het volgende voorbeeld wordt een App Center-testpakket uitgevoerd. De taak maakt gebruik van een serviceverbinding die u moet instellen.

Zie App Center-testtaak voor de volledige taaksyntaxis en -verwijzing. Zie Azure DevOps gebruiken voor ui-tests voor meer informatie.

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

Artefacten behouden met de buildrecord

Als u uw IPA-bestand (iOS AppStore Package) wilt opslaan met de buildrecord of test en het wilt implementeren in volgende pijplijnen, voegt u de taken Copy Files and Publish Build Artifacts toe aan uw pijplijn. Zie Pijplijnartefacten publiceren en downloaden voor meer informatie.

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

Implementeren in App Center

Als u een app wilt distribueren naar een groep testers of bètagebruikers, of de app wilt promoveren naar Intune of de Apple App Store, voegt u de taak App Center Distribueren toe . Voor de taak is een gratis App Center-account vereist dat gratis blijft.

In het volgende voorbeeld wordt een app gedistribueerd naar gebruikers. Zie App Center Distribueren voor de volledige taaksyntaxis en -verwijzing. Zie Azure DevOps-builds implementeren met App Center voor meer informatie.

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

De Apple App Store-extensie installeren en implementeren in De Apple App Store

Als u de interactie met de Apple App Store wilt automatiseren, installeert u de Apple App Store-extensie en gebruikt u vervolgens de volgende taken in uw pijplijn. Deze taken worden standaard geverifieerd bij Apple met behulp van een serviceverbinding die u moet configureren.

Als u de release van updates voor bestaande bèta-apps voor iOS TestFlight of productie-apps in de App Store wilt automatiseren, voegt u de releasetaak van de App Store toe.

Er gelden beperkingen voor het gebruik van deze taak met Tweeledige Verificatie van Apple. Apple-verificatie is regiospecifiek en fastlane-sessietokens verlopen snel en moeten opnieuw worden gemaakt en opnieuw worden geconfigureerd.

- 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

Als u de promotie van een eerder ingediende app vanuit iTunes Connect naar de App Store wilt automatiseren, voegt u de taak App Store Niveau verhogen toe.

- 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