Dela via


Skapa, testa och distribuera Xcode-appar

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

Den här snabbstarten visar hur du skapar och distribuerar Xcode-projekt med YAML-pipelines i Azure Pipelines.

Förutsättningar

  • En Azure DevOps-organisation och ett projekt där du har behörighet att skapa pipelines och distribuera appar.
  • Ett Xcode 9+-projekt och en app på en GitHub-lagringsplats. Mer information finns i Skapa ett Xcode-projekt för en app.

Skapa pipelinen

Viktigt!

Under GitHub-procedurerna kan du uppmanas att skapa en GitHub-tjänstanslutning eller omdirigeras till GitHub för att logga in, installera Azure Pipelines eller auktorisera Azure Pipelines. Följ anvisningarna på skärmen för att slutföra processen. Mer information finns i Åtkomst till GitHub-lagringsplatser.

  1. I ditt Azure DevOps-projekt väljer du Pipelines>Ny pipeline eller Skapa pipeline om den här pipelinen är den första i projektet.
  2. Välj GitHub som plats för källkoden.
  3. På skärmen Välj en lagringsplats väljer du lagringsplatsen för Xcode-projektet.
  4. På skärmen Konfigurera pipeline väljer du Xcode.

Azure Pipelines tillhandahåller en startpipeline baserat på Xcode-mallen . Granska koden i azure-pipelines.yml.

Skapa miljö

Xcode är förinstallerat på De Microsoft-värdbaserade macOS-agenterna i Azure Pipelines, så du behöver inte konfigurera någon infrastruktur. Exakta versioner av Xcode som är förinstallerade finns i Programvara för Microsoft-värdbaserade agenter.

Noden pool längst upp i filen azure-pipelines.yml väljer lämplig agentpool.

pool:
  vmImage: 'macOS-latest'

Xcode-bygguppgift

Xcode-aktiviteten skapar, testar eller arkiverar en Xcode-arbetsyta på macOS och kan eventuellt paketera en app. Xcode-steget i startfilen azure-pipelines.yml bygger iOS-projektet med dess standardschema, för simulatorn och utan paketering. Du kan ändra värden och lägga till parametrar som matchar projektkonfigurationen.

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

Spara och kör pipelinen

När du har granskat koden i azure-pipelines.yml väljer du Spara och kör.

Skärmbild av knappen Spara och kör i en ny YAML-pipeline.

Du kan också redigera incheckningsmeddelandet och ange en beskrivning. Välj sedan Spara och kör igen för att checka in azure-pipelines.yml filen till lagringsplatsen och starta en version.

På byggkörningssidan visas bygginformation och förlopp. Om du vill se din pipeline i praktiken väljer du Jobb på den nedre delen av sidan.

Nu har du en fungerande YAML-pipeline, azure-pipelines.yml, på din lagringsplats som är redo att anpassas.

Anpassa din pipeline

Om du vill göra ändringar i pipelinen väljer du Redigera på pipelinesidan. I följande avsnitt beskrivs några vanliga sätt att anpassa Xcode-pipelinen.

Lägga till signerings- och etableringsuppgifter

En Xcode-app måste signeras och etableras för att kunna köras på en enhet eller publicera till App Store. Signerings- och etableringsprocessen måste komma åt ditt P12-signeringscertifikat och en eller flera etableringsprofiler. Mer information finns i Signera din mobilapp.

Om du vill göra certifikatet och profilen tillgängliga för Xcode under en version lägger du till uppgifterna Installera Apple-certifikat och Installera Apple-etableringsprofil i din pipeline.

Använda en miljövariabel för karthage

Om ditt projekt använder Carthage med en privat Carthage-lagringsplats kan du konfigurera autentisering med hjälp av en miljövariabel med namnet GITHUB_ACCESS_TOKEN med värdet för en token som har åtkomst till lagringsplatsen. Karthage identifierar och använder automatiskt den här miljövariabeln.

Lägg inte till den hemliga token direkt i din YAML-pipeline. Välj i stället Variabler på pipelinesidan för att öppna fönstret Variabler och skapa en variabel för den här token. Se till att aktivera låsikonen för att kryptera värdet för variabeln. Mer information finns i Ange hemliga variabler.

Följande pipelinekod använder en hemlig variabel med namnet myGitHubAccessToken för värdet för GITHUB_ACCESS_TOKEN miljövariabeln.

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

Testa på Azure-värdbaserade enheter

Om du vill testa din app i ett värdbaserat labb med iOS-enheter i Visual Studio App Center lägger du till App Center-testuppgiften i din pipeline.

Den här uppgiften kräver ett kostnadsfritt utvärderingskonto för App Center , som måste konverteras till betalt efter 30 dagar för att fortsätta att använda testlabbet. Registrera dig för ett App Center-konto innan du använder den här uppgiften.

I följande exempel körs en App Center-testsvit. Uppgiften använder en tjänstanslutning som du måste konfigurera.

Fullständig aktivitetssyntax och referens finns i App Center-testaktivitet. Mer information finns i Använda Azure DevOps för användargränssnittstestning.

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

Behåll artefakter med byggposten

Om du vill lagra IPA-filen (iOS AppStore Package) med byggposten eller testa och distribuera den i efterföljande pipelines lägger du till uppgifterna Kopiera filer och Publicera byggartefakter i pipelinen. Mer information finns i Publicera och ladda ned pipelineartefakter.

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

Distribuera till App Center

Om du vill distribuera en app till en grupp testare eller betaanvändare, eller flytta upp appen till Intune eller Apple App Store, lägger du till uppgiften Distribuera i App Center . Uppgiften kräver ett kostnadsfritt App Center-konto som förblir kostnadsfritt.

I följande exempel distribueras en app till användare. Fullständig aktivitetssyntax och referens finns i Distribuera i App Center. Mer information finns i Distribuera Azure DevOps-versioner med 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'

Installera Apple App Store-tillägget och distribuera till Apple App Store

Om du vill automatisera interaktionen med Apple App Store installerar du Apple App Store-tillägget och använder sedan följande uppgifter i pipelinen. Som standard autentiseras dessa uppgifter till Apple med hjälp av en tjänstanslutning som du måste konfigurera.

Om du vill automatisera lanseringen av uppdateringar till befintliga betaappar för iOS TestFlight eller produktionsappar i App Store lägger du till uppgiften App Store-versionen .

Det finns begränsningar för att använda den här uppgiften med Apple-tvåfaktorsautentisering. Apple-autentisering är regionspecifik och snabblane-sessionstoken upphör att gälla snabbt och måste återskapas och konfigureras om.

- 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

Om du vill automatisera upphöjningen av en app som skickats tidigare från iTunes Connect till App Store lägger du till uppgiften App Store-upphöjning .

- 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