Xcode-alkalmazások készítése, tesztelése és üzembe helyezése
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Ismerje meg, hogyan hozhat létre és helyezhet üzembe Xcode-projekteket az Azure Pipelines használatával.
Előfeltételek
- Xcode 9+ projekt egy GitHub-adattárban. Ha nem rendelkezik projektel, olvassa el az Xcode-projekt létrehozása alkalmazáshoz című témakört
A folyamat létrehozása
Jelentkezzen be az Azure DevOps-szervezetbe, és nyissa meg a projektet.
Lépjen a Folyamatok elemre, majd válassza az Új folyamat vagy a Folyamat létrehozása lehetőséget az első folyamat létrehozásakor.
Végezze el a varázsló lépéseit úgy, hogy először a GitHubot választja a forráskód helyeként.
Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.
Amikor megjelenik az adattárak listája, válassza ki az adattárat.
Előfordulhat, hogy a Rendszer átirányítja a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha igen, válassza a Jóváhagyás > telepítés lehetőséget.
Amikor megjelenik a Konfigurálás lap, válassza az Xcode lehetőséget.
Amikor megjelenik az új folyamat, tekintse meg a YAML-et, hogy lássa, mit csinál. Ha elkészült, válassza a Mentés és futtatás lehetőséget.
A rendszer kérni fogja, hogy véglegesítsen egy új azure-pipelines.yml fájlt az adattárban. Miután elégedett az üzenettel, válassza a Mentés és futtatás lehetőséget.
Ha működés közben szeretné megtekinteni a folyamatot, válassza ki a buildelési feladatot.
Most hozott létre és futtatott egy folyamatot, amelyet automatikusan létrehoztunk Önnek, mert úgy tűnt, hogy a kód megfelel az Xcode-sablonnak .
Most már rendelkezik egy működő YAML-folyamat (
azure-pipelines.yml
) az adattárban, amely készen áll a testreszabásra!Ha készen áll a folyamat módosítására, jelölje ki azt a Folyamatok lapon, majd szerkessze a
azure-pipelines.yml
fájlt.
Az alábbi szakaszokban megismerheti a folyamat testreszabásának leggyakoribb módjait.
Tipp.
Ha módosítani szeretné a YAML-fájlt a jelen témakörben leírtak szerint, jelölje ki a folyamatot a Folyamatok lapon, majd válassza a Szerkesztés lehetőséget a azure-pipelines.yml
fájl szerkesztőjének megnyitásához.
Környezet létrehozása
Az Azure Pipelines használatával anélkül hozhatja létre az alkalmazásait Xcode-dal, hogy saját infrastruktúrát kellene beállítania. Az Xcode előre telepítve van a Microsoft által üzemeltetett macOS-ügynökökre az Azure Pipelinesban. A macOS-ügynökökkel futtathatja a buildeket.
Az előre telepített Xcode pontos verzióiért tekintse meg a Microsoft által üzemeltetett ügynököket.
Hozzon létre egy azure-pipelines.yml nevű fájlt az adattár gyökerében. Ezután adja hozzá a következő kódrészletet a fájlhoz a azure-pipelines.yml
megfelelő ügynökkészlet kiválasztásához:
# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/xcode
pool:
vmImage: 'macOS-latest'
Alkalmazás létrehozása Xcode-tal
Ha Xcode-kóddal szeretne létrehozni egy alkalmazást, adja hozzá a következő kódrészletet a azure-pipelines.yml
fájlhoz. Ez egy minimális kódrészlet egy iOS-projekt létrehozásához az alapértelmezett sémával, a szimulátorhoz és csomagolás nélkül. Módosítsa a projektkonfigurációnak megfelelő értékeket. Ezekről a lehetőségekről további információt az Xcode-feladatban talál.
pool:
vmImage: 'macos-latest'
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
Aláírás és kiépítés
Az Xcode-alkalmazásokat alá kell írni és ki kell építeni egy eszközön való futtatáshoz, vagy közzé kell tenni az App Store-ban. Az aláírási és kiépítési folyamatnak hozzá kell férnie a P12 aláíró tanúsítványához és egy vagy több kiépítési profilhoz. Az Apple-tanúsítvány telepítése és az Apple Provisioning Profile telepítése feladatokkal ezeket elérhetővé teszi az Xcode számára a buildelés során.
További információ: A mobilalkalmazás aláírása.
Carthage
Ha a projekt a Carthage-t privát Carthage-adattárral használja, a hitelesítést úgy állíthatja be, hogy beállít egy olyan környezeti változót GITHUB_ACCESS_TOKEN
, amelynek értéke egy olyan jogkivonat, amely hozzáfér az adattárhoz.
A Karthage automatikusan észleli és használja ezt a környezeti változót.
Ne adja hozzá közvetlenül a titkos kód jogkivonatát a folyamat YAML-éhez. Ehelyett hozzon létre egy új folyamatváltozót, amelynek zárolása engedélyezve van a Változók panelen az érték titkosításához. Titkos változók megtekintése.
Íme egy példa, amely a környezeti változó értékéről elnevezett myGitHubAccessToken
titkos változót GITHUB_ACCESS_TOKEN
használ.
- script: carthage update --platform iOS
env:
GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)
Tesztelés Az Azure által üzemeltetett eszközökön
Adja hozzá az App Center tesztfeladatot az alkalmazás teszteléséhez iOS- és Android-eszközök üzemeltetett tesztkörnyezetében. Az App Center ingyenes próbaverziója szükséges, amelyet később fizetőssé kell alakítani.
Először regisztráljon az App Centerrel .
# App Center test v1
# Test app packages with Visual Studio App Center.
- task: AppCenterTest@1
inputs:
appFile: # string. Alias: app. Required. Binary application file path.
artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest' # string. Alias: artifactsDir. Required. Artifacts directory. Default: $(Build.ArtifactStagingDirectory)/AppCenterTest.
# Prepare Tests
#prepareTests: true # boolean. Alias: enablePrepare. Prepare tests. Default: true.
frameworkOption: 'appium' # 'appium' | 'espresso' | 'calabash' | 'uitest' | 'xcuitest'. Alias: framework. Required when enablePrepare = true. Test framework. Default: appium.
#appiumBuildDirectory: # string. Alias: appiumBuildDir. Required when enablePrepare = true && framework = appium. Build directory.
#espressoBuildDirectory: # string. Alias: espressoBuildDir. Optional. Use when enablePrepare = true && framework = espresso. Build directory.
#espressoTestApkFile: # string. Alias: espressoTestApkPath. Optional. Use when enablePrepare = true && framework = espresso. Test APK path.
#calabashProjectDirectory: # string. Alias: calabashProjectDir. Required when enablePrepare = true && framework = calabash. Project directory.
#calabashConfigFile: # string. Optional. Use when enablePrepare = true && framework = calabash. Cucumber config file.
#calabashProfile: # string. Optional. Use when enablePrepare = true && framework = calabash. Profile to run.
#calabashSkipConfigCheck: false # boolean. Optional. Use when enablePrepare = true && framework = calabash. Skip Configuration Check. Default: false.
#uiTestBuildDirectory: # string. Alias: uitestBuildDir. Required when enablePrepare = true && framework = uitest. Build directory.
#uitestStorePath: # string. Optional. Use when enablePrepare = true && framework = uitest. Store file.
#uiTestStorePassword: # string. Alias: uitestStorePass. Optional. Use when enablePrepare = true && framework = uitest. Store password.
#uitestKeyAlias: # string. Optional. Use when enablePrepare = true && framework = uitest. Key alias.
#uiTestKeyPassword: # string. Alias: uitestKeyPass. Optional. Use when enablePrepare = true && framework = uitest. Key password.
#uiTestToolsDirectory: # string. Alias: uitestToolsDir. Optional. Use when enablePrepare = true && framework = uitest. Test tools directory.
#signInfo: # string. Optional. Use when framework = calabash || framework = uitest. Signing information.
#xcUITestBuildDirectory: # string. Alias: xcuitestBuildDir. Optional. Use when enablePrepare = true && framework = xcuitest. Build directory.
#xcUITestIpaFile: # string. Alias: xcuitestTestIpaPath. Optional. Use when enablePrepare = true && framework = xcuitest. Test IPA path.
#prepareOptions: # string. Alias: prepareOpts. Optional. Use when enablePrepare = true. Additional options.
# Run Tests
#runTests: true # boolean. Alias: enableRun. Run tests. Default: true.
credentialsOption: 'serviceEndpoint' # 'serviceEndpoint' | 'inputs'. Alias: credsType. Required when enableRun = true. Authentication method. Default: serviceEndpoint.
#serverEndpoint: # string. Required when enableRun = true && credsType = serviceEndpoint. App Center service connection.
#username: # string. Required when enableRun = true && credsType = inputs. App Center username.
#password: # string. Required when enableRun = true && credsType = inputs. App Center password.
appSlug: # string. Required when enableRun = true. App slug.
devices: # string. Required when enableRun = true. Devices.
#series: 'master' # string. Optional. Use when enableRun = true. Test series. Default: master.
#dsymDirectory: # string. Alias: dsymDir. Optional. Use when enableRun = true. dSYM directory.
localeOption: 'en_US' # 'da_DK' | 'nl_NL' | 'en_GB' | 'en_US' | 'fr_FR' | 'de_DE' | 'ja_JP' | 'ru_RU' | 'es_MX' | 'es_ES' | 'user'. Alias: locale. Required when enableRun = true. System language. Default: en_US.
#userDefinedLocale: # string. Optional. Use when enableRun = true && locale = user. Other locale.
#loginOptions: # string. Alias: loginOpts. Optional. Use when enableRun = true && credsType = inputs. Additional options for login.
#runOptions: # string. Alias: runOpts. Optional. Use when enableRun = true. Additional options for run.
#skipWaitingForResults: false # boolean. Alias: async. Optional. Use when enableRun = true. Do not wait for test result. Default: false.
# Advanced
#cliFile: # string. Alias: cliLocationOverride. App Center CLI location.
#showDebugOutput: false # boolean. Alias: debug. Enable debug output. Default: false.
Összetevők megőrzése a buildrekorddal
Adja hozzá a Fájlok másolása és buildösszetevők közzététele feladatokat az IPA buildrekorddal való tárolásához vagy teszteléséhez, majd a későbbi folyamatokban való üzembe helyezéséhez. Lásd: Összetevők.
- task: CopyFiles@2
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Üzembe helyezés
App Center
Adja hozzá az App Center Distribute feladatot, amely egy alkalmazást tesztelők vagy bétafelhasználók egy csoportjának terjeszt, vagy előlépteti az alkalmazást az Intune-ban vagy az Apple App Store-ban. Ingyenes App Center-fiók szükséges (nincs szükség fizetésre).
# App Center distribute v3
# Distribute app builds to testers and users via Visual Studio App Center.
- task: AppCenterDistribute@3
inputs:
serverEndpoint: # string. Required. App Center service connection.
appSlug: # string. Required. App slug.
appFile: # string. Alias: app. Required. Binary file path.
#buildVersion: # string. Build version.
releaseNotesOption: 'input' # 'input' | 'file'. Alias: releaseNotesSelection. Required. Create release notes. Default: input.
releaseNotesInput: # string. Required when releaseNotesSelection = input. Release notes.
#releaseNotesFile: # string. Required when releaseNotesSelection = file. Release notes file.
#isMandatory: false # boolean. Require users to update to this release. Default: false.
destinationType: 'groups' # 'groups' | 'store'. Required. Release destination. Default: groups.
#distributionGroupId: # string. Alias: destinationGroupIds. Optional. Use when destinationType = groups. Destination IDs.
#destinationStoreId: # string. Required when destinationType = store. Destination ID.
#isSilent: # boolean. Optional. Use when destinationType = groups. Do not notify testers. Release will still be available to install.
# Symbols
#symbolsOption: 'Apple' # 'Apple' | 'Android' | 'UWP'. Alias: symbolsType. Symbols type. Default: Apple.
#symbolsPath: # string. Optional. Use when symbolsType == AndroidNative || symbolsType = Windows. Symbols path.
#appxsymPath: # string. Optional. Use when symbolsType = UWP. Symbols path (*.appxsym).
#symbolsDsymFiles: # string. Alias: dsymPath. Optional. Use when symbolsType = Apple. dSYM path.
#symbolsMappingTxtFile: # string. Alias: mappingTxtPath. Optional. Use when symbolsType = Android. Mapping file.
#nativeLibrariesPath: # string. Optional. Use when symbolsType == Android. Native Library File Path.
#symbolsIncludeParentDirectory: # boolean. Alias: packParentFolder. Optional. Use when symbolsType = Apple. Include all items in parent folder.
Apple App Store
Telepítse az Apple App Store bővítményt , és az alábbi feladatokkal automatizálja az App Store-ral való interakciót. Alapértelmezés szerint ezek a feladatok egy konfigurált szolgáltatáskapcsolat használatával hitelesítik az Apple-t.
Felszabadítás
Adja hozzá az App Store kiadási feladatát, amely automatizálja a meglévő iOS TestFlight bétaalkalmazások vagy éles alkalmazások frissítéseinek kiadását az App Store-ban.
Tekintse meg a feladat Apple kéttényezős hitelesítéssel való használatának korlátozásait , mivel az Apple-hitelesítés régióspecifikus, és a fastlane munkamenet-jogkivonatok gyorsan lejárnak, és ú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' # This service connection must be added by you
appIdentifier: com.yourorganization.testapplication.etc
ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
shouldSkipWaitingForProcessing: true
shouldSkipSubmission: true
Reklámozás
Adja hozzá az App Store előléptetési feladatát, amely automatizálja egy korábban elküldött alkalmazás előléptetését az iTunes Csatlakozás az App Store-ba.
- task: AppStorePromote@1
displayName: 'Submit to the App Store for review'
inputs:
serviceEndpoint: 'My Apple App Store service connection' # This service connection must be added by you
appIdentifier: com.yourorganization.testapplication.etc
shouldAutoRelease: false
Kapcsolódó bővítmények
- Apple App Store (Microsoft)
- Kodifikált biztonság (Kodifikált biztonság)
- MacinCloud (Moboware Inc.)
- Mobilalkalmazás-feladatok iOS-hez és Androidhoz (James Montemagno)
- Mobile Testing Lab (Perfecto Mobile)
- Raygun (Raygun)
- React Native (Microsoft)
- Verzióválasztó (Tom Gilder)
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: