Sdílet prostřednictvím


Sestavování, testování a nasazování aplikací Xcode

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

V tomto rychlém startu se dozvíte, jak sestavovat a nasazovat projekty Xcode s kanály YAML v Azure Pipelines.

Požadavky

  • Organizace a projekt Azure DevOps, kde máte oprávnění vytvářet kanály a nasazovat aplikace.
  • Projekt a aplikace Xcode 9+ v úložišti GitHub. Další informace najdete v tématu Vytvoření projektu Xcode pro aplikaci.

Vytvořte kanál

Důležité

Během postupů GitHubu se může zobrazit výzva k vytvoření připojení služby GitHub nebo k přesměrování na GitHub, abyste se mohli přihlásit, nainstalovat Azure Pipelines nebo autorizovat Azure Pipelines. Dokončete proces podle pokynů na obrazovce. Další informace najdete v tématu Přístup k úložištím GitHub.

  1. V projektu Azure DevOps vyberte Kanály>Nový kanál nebo Vytvořte kanál, pokud je tento kanál v projektu prvním kanálem.
  2. Jako umístění zdrojového kódu vyberte GitHub .
  3. Na obrazovce Vybrat úložiště vyberte úložiště pro váš projekt Xcode.
  4. Na obrazovce Konfigurace kanálu vyberte Xcode.

Azure Pipelines poskytuje počáteční kanál založený na šabloně Xcode . Zkontrolujte kód v azure-pipelines.yml.

Sestavení prostředí

Xcode je předinstalovaný na agentech macOS hostovaných Microsoftem v Azure Pipelines, takže nemusíte nastavovat žádnou infrastrukturu. Přesné verze Xcode, které jsou předinstalované, najdete v softwaru agentů hostovaných Microsoftem.

Uzel pool v horní části souboru azure-pipelines.yml vybere příslušný fond agentů.

pool:
  vmImage: 'macOS-latest'

Úloha sestavení Xcode

Úloha Xcode sestaví, testuje nebo archivuje pracovní prostor Xcode v systému macOS a volitelně může zabalit aplikaci. Krok Xcode v počátečním azure-pipelines.yml souboru sestaví projekt iOS pomocí výchozího schématu simulátoru a bez balení. Můžete změnit hodnoty a přidat parametry tak, aby odpovídaly konfiguraci projektu.

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

Ulož a spusť pipeline

Až dokončíte kontrolu kódu v azure-pipelines.yml, vyberte Uložit a spustit.

Snímek obrazovky s tlačítkem Uložit a spustit v novém kanálu YAML

Volitelně můžete upravit commit zprávu a zadat popis. Potom vyberte Uložit a spusťte znovu, aby se soubor azure-pipelines.yml uložil do úložiště a spustil sestavení.

Na stránce běhu sestavení se zobrazují podrobnosti sestavení a jeho průběh. Pokud chcete sledovat pipeline v akci, vyberte Úlohu v dolní části stránky.

Teď máte v úložišti funkční kanál YAML, azure-pipelines.yml, který je připravený k přizpůsobení.

Přizpůsobte si svůj pipeline

Pokud chcete v kanálu udělat změny, na stránce kanálu vyberte Upravit . Následující části popisují některé běžné způsoby přizpůsobení kanálu Xcode.

Přidejte úlohy podepisování a zřizování

Aplikace Xcode musí být podepsaná a zřízená, aby mohla běžet na zařízení nebo publikovat do App Storu. Proces podepisování a zřizování musí mít přístup k podpisovému certifikátu P12 a k jednomu nebo více zřizovacím profilům. Další informace najdete v tématu Podepsání mobilní aplikace.

Pokud chcete certifikát a profil zpřístupnit Xcode během sestavování, přidejte do kanálu úlohy Instalace certifikátu Apple a Instalace zřizovacího profilu Apple.

Použití proměnné prostředí Carthage

Pokud váš projekt používá Carthage s privátním úložištěm Carthage, můžete nastavit ověřování pomocí proměnné prostředí s názvem GITHUB_ACCESS_TOKEN s hodnotou tokenu, který má přístup k úložišti. Carthage automaticky detekuje a používá tuto proměnnou prostředí.

Nepřidávejte tajný token přímo do YAML souboru. Místo toho výběrem proměnných na stránce kanálu otevřete podokno Proměnné a vytvořte pro tento token proměnnou. Nezapomeňte povolit ikonu zámku pro šifrování hodnoty proměnné. Další informace naleznete v tématu Nastavení tajných proměnných.

Tento kód pipeline používá tajnou proměnnou pojmenovanou myGitHubAccessToken pro hodnotu proměnné prostředí GITHUB_ACCESS_TOKEN.

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

Testování na zařízeních hostovaných v Azure

Pokud chcete svou aplikaci otestovat v hostovaném testovacím prostředí zařízení s iOSem v Centru aplikací sady Visual Studio, přidejte úlohu App Center Test do svého kanálu.

Tato úloha vyžaduje bezplatný zkušební účet App Center, který se po 30 dnech musí změnit na placený, aby bylo možné nadále používat testovací prostředí. Před použitím této úlohy si zaregistrujte účet App Center.

Varování

31. března 2025 je naplánované vyřazení sady Visual Studio App Center. Další informace o časových osách podpory a doporučených alternativách.

Nejprve se zaregistrujte pomocí App Center.

Následující příklad spustí testovací sadu App Center. Úloha používá připojení služby, které musíte nastavit.

Úplnou syntaxi úlohy a referenční informace najdete v tématu Testovací úloha App Center. Další informace najdete v tématu Použití Azure DevOps pro testování uživatelského rozhraní.

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

Zachování artefaktů pomocí záznamu buildu

Pokud chcete uložit soubor balíčku AppStore pro iOS (IPA) se záznamem sestavení nebo ho otestovat a nasadit v následujících kanálech, přidejte úlohy Kopírovat soubory a Publikovat artefakty sestavení do vašeho kanálu. Další informace naleznete v dokumentu Publikování a stahování artefaktů kanálu.

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

Nasazení do App Center

K distribuci aplikace skupině testerů nebo beta uživatelů, nebo pro její propagaci do Intune nebo Apple App Storu, přidejte úlohu App Center Distribute. Úkol vyžaduje bezplatný účet App Center , který zůstane zdarma.

Následující příklad distribuuje aplikaci uživatelům. Úplnou syntaxi úloh a referenční informace najdete v tématu Distribuce v App Center. Další informace najdete v tématu Nasazení buildů Azure DevOps pomocí 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'

Instalace rozšíření Apple App Store a nasazení do Apple App Storu

Pokud chcete automatizovat interakci s Apple App Storem, nainstalujte rozšíření Apple App Store a pak použijte ve svém kanálu následující úlohy. Ve výchozím nastavení se tyto úlohy ověřují u Společnosti Apple pomocí připojení služby, které musíte nakonfigurovat.

Pokud chcete automatizovat vydávání aktualizací stávajících beta aplikací pro iOS TestFlight nebo produkčních aplikací v App Storu, přidejte úlohu vydání z App Storu.

Používání této úlohy s dvoufaktorovým ověřováním Apple má určitá omezení. Ověřování Applu je specifické pro region a tokeny relace fastlane rychle vyprší, takže je třeba je opět vytvořit a znovu nakonfigurovat.

- 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

Pokud chcete automatizovat propagaci aplikace, která byla dříve odeslána z iTunes Connect do App Storu, přidejte úlohu App Store Promote.

- 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