Xcode-alkalmazások készítése, tesztelése és üzembe helyezése

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Ez a cikk bemutatja, hogyan hozhat létre és helyezhet üzembe Xcode-projekteket YAML-folyamatokkal az Azure Pipelinesban.

Előfeltételek

  • Egy Azure DevOps-szervezet és -projekt, amelyben engedéllyel rendelkezik folyamatok létrehozására és alkalmazások üzembe helyezésére.
  • Xcode 9+ projekt és alkalmazás egy GitHub-adattárban. További információ: Xcode-projekt létrehozása alkalmazáshoz.

A folyamatlánc létrehozása

Fontos

A GitHub-eljárások során előfordulhat, hogy a rendszer arra kéri, hogy hozzon létre egy GitHub-szolgáltatáskapcsolatot , vagy átirányítsa a GitHubra a bejelentkezéshez, az Azure Pipelines telepítéséhez vagy az Azure Pipelines engedélyezéséhez. A folyamat befejezéséhez kövesse a képernyőn megjelenő utasításokat. További információért lásd: Hozzáférés a GitHub-tárházakhoz.

  1. Az Azure DevOps-projektben válassza a > a Create pipeline (Folyamat létrehozása) lehetőséget, ha ez a folyamat az első a projektben.
  2. Válassza a GitHubot a forráskód helyeként.
  3. Az Adattár kiválasztása képernyőn válassza ki az Xcode-projekt adattárát.
  4. A folyamat konfigurálása képernyőn válassza az Xcode lehetőséget.

Az Azure Pipelines egy Xcode-sablonon alapuló kezdőfolyamatot biztosít. Tekintse át a kódot a azure-pipelines.yml.

Környezet létrehozása

Az Xcode előre telepítve van a Microsoft által üzemeltetett macOS-ügynökökre az Azure Pipelinesban, így nem kell infrastruktúrát beállítania. Az előre telepített Xcode pontos verzióiért lásd a Microsoft által üzemeltetett ügynökök szoftverét.

A pool azure-pipelines.yml fájl tetején lévő csomópont kiválasztja a megfelelő ügynökkészletet.

pool:
  vmImage: 'macOS-latest'

Xcode építési feladat

Az Xcode-feladat létrehoz, tesztel vagy archivál egy Xcode-munkaterületet macOS rendszeren, és opcionálisan becsomagolhat egy alkalmazást. A kezdő azure-pipelines.yml fájl Xcode lépése az iOS-projektet az alapértelmezett sémával, a szimulátorhoz és csomagolás nélkül hozza létre. Módosíthatja az értékeket, és paramétereket adhat hozzá a projektkonfigurációnak megfelelően.

Fejlesztési build:

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

Éles build az App Store-hoz:

Éles kiadások esetén adja meg az explicit Xcode-verziót, az alkalmazás sémáját és a kiadási konfigurációt:

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'

A gyártási környezet főbb eltérései:

  • xcodeVersion: Konzisztens, reprodukálható buildek helyett '14' adjon meg rögzített verziót (pl. 'default')
  • séma: Cserélje le az üres sztringet az alkalmazás tényleges sémanevére.
  • sdk: Eszköz buildekhez; 'iphoneos' szimulátor-buildekhez használható 'iphonesimulator' .
  • konfiguráció: Éles használatra; 'Release' fejlesztésre használható 'Debug' .
  • packageApp: Úgy van beállítva, hogy true egy fájlt hozzon létre .ipa a terjesztéshez.
  • exportPath: A csomag kimenetét a build előkészítési könyvtárába irányítja az összetevők közzétételéhez.

Mentse és futtassa a pipeline-t

Amikor befejezte a kód áttekintését a azure-pipelines.yml, válassza a Mentés és futtatás lehetőséget.

Képernyőkép egy új YAML-folyamat Mentés és futtatás gombjáról.

Igény szerint szerkessze a véglegesítési üzenetet , és adjon meg egy leírást. Ezután válassza a Mentés lehetőséget, és futtassa újra a azure-pipelines.yml fájlt az adattárban való véglegesítéséhez, és indítsa el a buildet.

A buildelési oldal a build részleteit és a folyamat előrehaladását mutatja. Ha működés közben szeretné megtekinteni a folyamatot, válassza a Feladat lehetőséget a lap alsó részén.

Most már rendelkezik az adattárban egy működő YAML-pipeline-nel (azure-pipelines.yml), amely készen áll a testreszabásra.

A munkafolyamat testreszabása

Ha módosítani szeretné a folyamatot, válassza a Szerkesztés lehetőséget a folyamat lapján. Az alábbi szakaszok ismertetik az Xcode-folyamat egyedi igények szerinti testreszabásának néhány gyakori módját:

  • Aláírás és kiépítés: A fizikai eszközökön vagy az App Store-ban való üzembe helyezéshez szükséges.
  • Függőségkezelés: A magánadattárak hitelesítésének konfigurálása.
  • Összetevők kezelése: Buildkimenetek tárolása teszteléshez és üzembe helyezéshez.
  • Elosztás: A TestFlight vagy az App Store kiadásának automatizálása.

Aláírási és telepítési feladatok hozzáadása

Az Xcode-alkalmazás fizikai eszközön való futtatásához vagy az App Store-ban való közzétételéhez alá kell írnia és ki kell építenie az alkalmazást. Ez a folyamat magában foglalja egy P12 aláíró tanúsítványnak (egy biztonsági hitelesítő adat, amely ellenőrzi az alkalmazás identitását) és telepítési profiloknak (amelyek engedélyezik az alkalmazást adott eszközökre vagy terjesztésre) a felhasználását. További információ: A mobilalkalmazás aláírása.

Ha elérhetővé szeretné tenni a tanúsítványt és a profilt az Xcode számára a buildelés során, adja hozzá az Apple-tanúsítvány telepítését és az Apple Provisioning Profile-feladatok telepítését a folyamathoz.

Függőségek kezelése

Az Xcode-projekt függőségkezelőkkel kezelheti a külső kódtárakat és keretrendszereket. A következő szakaszok bemutatják, hogyan konfigurálható a hitelesítés a különböző függőségkezelőkkel rendelkező magánadattárakhoz.

Swift Package Manager

A Swift Package Manager (SPM) az Apple natív függőségkezelője, és közvetlenül az Xcode-ba van integrálva. Az SPM-et magáncsomagokkal használó projektek esetében konfigurálnia kell a Git-hitelesítést.

Ha a privát Swift-csomagokat a GitHubon üzemelteti, állítson be hitelesítést egy olyan környezeti változóval, GITHUB_ACCESS_TOKEN amely egy személyes hozzáférési jogkivonat értékével rendelkezik, amely rendelkezik hozzáféréssel az adattárhoz.

Ne adja hozzá a titkos jogkivonatot közvetlenül a folyamat YAML-éhez, mivel ez a művelet a forráskódban teszi elérhetővé. További információ: Titkos kódváltozók beállítása.

A következő folyamatkód egy hitelesítéshez elnevezett myGitHubAccessToken titkos változót használ a Swift Package-függőségek feloldásakor:

- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Az Azure Reposon vagy más Git-szolgáltatókon üzemeltetett privát csomagok esetében a buildelési lépés előtt konfigurálja a megfelelő Git-hitelesítő adatokat.

CocoaPods

Ha a projekt CocoaPodsot használ, a CocoaPods-feladat használatával telepítse a függőségeket.

- task: CocoaPods@0
  inputs:
    workingDirectory: '$(System.DefaultWorkingDirectory)'
    forceRepo: false

Karthágó

Ha a projekt a Carthage-t (iOS/macOS-projektek függőségkezelőjét) használja egy privát Carthage-adattárral, állítson be hitelesítést egy olyan környezeti változóval, amely egy olyan jogkivonat értékével van elnevezve GITHUB_ACCESS_TOKEN , amely hozzáfér az adattárhoz. A Karthage automatikusan észleli és használja ezt a környezeti változót.

Ne adja hozzá a titkos jogkivonatot közvetlenül a folyamat YAML-éhez, mivel ez a művelet a forráskódban teszi elérhetővé. További információ: Titkos kódváltozók beállítása.

Az alábbi folyamatkód egy myGitHubAccessToken nevű titkos változót használ a GITHUB_ACCESS_TOKEN környezeti változó értékeként.

- script: carthage update --platform iOS
  displayName: 'Update Carthage dependencies'
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Tesztelés Az Azure által üzemeltetett eszközökön

A Visual Studio App Center 2025. március 31-én megszűnt. Megismerheti az ajánlott alternatívákat.

Összetevők megőrzése a buildrekorddal

Ha az iOS AppStore-csomag (IPA) fájlját a buildrekorddal szeretné tárolni, vagy tesztelni szeretné és üzembe szeretné helyezni a későbbi folyamatokban, adja hozzá a Fájlok másolása és a Folyamatösszetevők közzététele feladatokat a folyamathoz.

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(build.artifactStagingDirectory)'
    artifact: 'drop'

Üzembe helyezés az Apple App Store-ban vagy a TestFlightban

Ha egy alkalmazást tesztelőknek vagy bétafelhasználóknak szeretne terjeszteni, használja az Apple TestFlightot, vagy helyezze üzembe közvetlenül az App Store-ban. Az Apple App Store üzembe helyezéséről az alábbi szakaszban olvashat.

A bétateszteléshez és a felhasználói visszajelzésekhez fontolja meg az alábbiak használatát:

Az Apple App Store bővítmény telepítése és üzembe helyezése az Apple App Store-ban

Az Apple App Store-ral való interakció automatizálásához telepítse az Apple App Store bővítményt, majd használja a folyamat következő feladatait. Alapértelmezés szerint ezek a feladatok egy konfigurálni kívánt szolgáltatáskapcsolat használatával hitelesítik az Apple-t.

Ha automatizálni szeretné a meglévő iOS TestFlight bétaalkalmazások vagy éles alkalmazások frissítéseinek kiadását az App Store-ban, adja hozzá az App Store kiadási feladatát.

A feladat Apple kéttényezős hitelesítéssel történő használatakor korlátozások vannak érvényben. Az Apple-hitelesítés régióspecifikus, és a fastlane munkamenet-jogkivonatok (az Apple-hitelesítéshez használt ideiglenes hitelesítő adatok) gyorsan lejárnak, és rendszeresen újra létre kell hozni és újra kell konfigurálni.

- 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

Ha automatizálni szeretné egy korábban elküldött alkalmazás előléptetését az iTunes Connectből az App Store-ba, adja hozzá az App Store előléptetési feladatát.

- 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