Xcode uygulamaları derleme, test ve dağıtma

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Azure Pipelines ile Xcode projeleri derlemeyi ve Azure Pipelines.

Önkoşullar

İşlem hattını oluşturma

  1. Azure DevOps oturum açma ve projenize gidin.

  2. yeni işlem Pipelinesyeni işlem hattı'ı seçin.

  3. İlk olarak kaynak kodunuzun konumu olarak GitHub sihirbazın adımlarını izleyin.

  4. Oturum açmanız için GitHub yönlendirilmesine neden olabilir. Öyleyse, kimlik bilgilerinizi GitHub girin.

  5. Depo listesi görüntülendiğinde depoyu seçin.

  6. Azure Pipelines uygulamasını GitHub için Azure Pipelines yönlendirebilirsiniz. Öyleyse, Yükle'yi onayla'ya seçin.

Yapılandır sekmesi görüntülendiğindeXcode'ı seçin.

  1. Yeni işlem hattınız görüntülendiğinde YAML'ye göz atarak ne işe yardımcı olduğunu kontrol etmek için bu işlem hattına bakın. Hazır olduğunda Kaydet'i seçin ve çalıştırın.

    Yeni bir YAML işlem hattında kaydet ve çalıştır düğmesi

  2. Yeni bir azure-pipelines.yml dosyasını depoya işlemeniz istenir. İletiden memnun olduktan sonra Kaydet'i seçin ve yeniden çalıştırın.

    İşlem hattınızı nasıl iş olarak izlemek istediğinize bakarak derleme işini seçin.

    Kodunuz Xcode şablonu için iyi bir eşleşme gibi görünüyor olduğundan sizin için otomatik olarak oluşturduğum bir işlem hattı oluşturduk ve bu işlem hattını çalıştırmaya başladınız.

    Artık depoda özelleştirebileceğiniz çalışan bir YAML işlem hattınız ( azure-pipelines.yml ) var!

  3. İşlem hattınız üzerinde değişiklik yapmaya hazırsanız, işlem hattı sayfasından Pipelines sonra Dosyayı düzenle'yi seçin.

İşlem hattınızı özelleştirmenin daha yaygın yollarından bazıları hakkında bilgi edinmek için aşağıdaki bölümlere bakın.

İpucu

YAML dosyasında bu konu başlığı altında açıklandığı gibi değişiklik yapmak için, Pipelines sayfasında işlem hattını seçin ve ardından Düzenle'yi seçerek dosya için bir düzenleyici açın.

Derleme ortamı

Kendi altyapınızı Azure Pipelines gerek kalmadan Xcode ile uygulamalarınızı derlemek için Azure Pipelines'i kullanabilirsiniz. Xcode, microsoft tarafından barındırılan macOS aracılara önceden yüklenmiştir Azure Pipelines. Derlemelerinizi çalıştırmak için macOS aracılarını kullanabilirsiniz.

Xcode'un önceden yüklenmiş tam sürümleri için bkz. Microsoft tarafından barındırılan aracılar.

Deponun kökünde azure-pipelines.yml adlı bir dosya oluşturun. Ardından, uygun aracı havuzunu seçmek azure-pipelines.yml için dosyanıza aşağıdaki kod parçacığını ekleyin:

# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xcode
pool:
  vmImage: 'macOS-latest'

Xcode ile uygulama oluşturma

Xcode ile uygulama oluşturmak için dosyanıza aşağıdaki kod parçacığını azure-pipelines.yml ekleyin. Bu, Simulator için ve paketleme olmadan varsayılan şemasını kullanarak bir iOS projesi oluşturmanın en küçük bir kod parçacığıdır. Değerleri proje yapılandırmanıza göre değiştirme. Bu seçenekler hakkında daha fazla bilgi için bkz. Xcode görevi.

pool:
  vmImage: 'macos-latest'

steps:
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
    xcodeVersion: 'default' # Options: 8, 9, 10, 11, 12, default, specifyPath

İmzalama ve sağlama

Bir Xcode uygulamasının bir cihazda çalışması veya cihaza yayımlanacak şekilde imzalanır ve sağlanması App Store. İmzalama ve sağlama işleminin P12 imzalama sertifikanıza ve bir veya daha fazla sağlama profiline erişmesi gerekir. Apple Sertifikasını Yükle ve Apple Sağlama Profilini Yükle görevleri, bunları derleme sırasında Xcode'da kullanılabilir hale gelir.

Daha fazla bilgi edinmek için bkz. Mobil uygulamanızı imzalama.

Kartaca

Projeniz özel bir Carthage deposuyla Carthage kullanıyorsa, depoya erişimi olan bir belirteci değeriyle adlı bir ortam değişkeni ayarerek kimlik GITHUB_ACCESS_TOKEN doğrulamasını yapılandırabilirsiniz. Carthage bu ortam değişkenini otomatik olarak algılar ve kullanır.

Gizli belirteci doğrudan işlem hattı YAML'nize ekleyebilirsiniz. Bunun yerine, bu değeri şifrelemek için Değişkenler bölmesinde kilidi etkinleştirilmiş yeni bir işlem hattı değişkeni oluşturun. Gizli değişkenlere bakın.

Ortam değişkeninin değeri için adlı bir gizli myGitHubAccessToken değişken kullanan bir örnek burada GITHUB_ACCESS_TOKEN vetir.

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

Azure'da barındırılan cihazlarda test etme

Uygulamayı iOS App Center Android cihazlarında barındırılan bir laboratuvarda test etmek için App Center Test görevini ekleyin. Daha App Center ücretli deneme sürümüne dönüştürülmesi gereken bir ücretsiz deneme sürümü gereklidir.

İlk olarak App Center olun.

# App Center test
# Test app packages with Visual Studio App Center
- task: AppCenterTest@1
  inputs:
    appFile: 
    #artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest' 
    #prepareTests: true # Optional
    #frameworkOption: 'appium' # Required when prepareTests == True# Options: appium, espresso, calabash, uitest, xcuitest
    #appiumBuildDirectory: # Required when prepareTests == True && Framework == Appium
    #espressoBuildDirectory: # Optional
    #espressoTestApkFile: # Optional
    #calabashProjectDirectory: # Required when prepareTests == True && Framework == Calabash
    #calabashConfigFile: # Optional
    #calabashProfile: # Optional
    #calabashSkipConfigCheck: # Optional
    #uiTestBuildDirectory: # Required when prepareTests == True && Framework == Uitest
    #uitestStorePath: # Optional
    #uiTestStorePassword: # Optional
    #uitestKeyAlias: # Optional
    #uiTestKeyPassword: # Optional
    #uiTestToolsDirectory: # Optional
    #signInfo: # Optional
    #xcUITestBuildDirectory: # Optional
    #xcUITestIpaFile: # Optional
    #prepareOptions: # Optional
    #runTests: true # Optional
    #credentialsOption: 'serviceEndpoint' # Required when runTests == True# Options: serviceEndpoint, inputs
    #serverEndpoint: # Required when runTests == True && CredsType == ServiceEndpoint
    #username: # Required when runTests == True && CredsType == Inputs
    #password: # Required when runTests == True && CredsType == Inputs
    #appSlug: # Required when runTests == True
    #devices: # Required when runTests == True
    #series: 'master' # Optional
    #dsymDirectory: # Optional
    #localeOption: 'en_US' # Required when runTests == True# Options: da_DK, nl_NL, en_GB, en_US, fr_FR, de_DE, ja_JP, ru_RU, es_MX, es_ES, user
    #userDefinedLocale: # Optional
    #loginOptions: # Optional
    #runOptions: # Optional
    #skipWaitingForResults: # Optional
    #cliFile: # Optional
    #showDebugOutput: # Optional

Yapıtları derleme kaydıyla koruma

IPA'nızı derlemekaydıyla Artifacts veya sonraki işlem hatlarında test etmek ve dağıtmak için Dosyaları Kopyala ve Derlemeyi Yayımla görevlerini ekleyin. Bkz. Artifacts.

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

Dağıtma

App Center

Uygulamayı bir App Center veya beta kullanıcılarına dağıtmak ya da uygulamayı Intune veya Apple App Store'a yükseltin. Ücretsiz App Center hesabı gereklidir (ödeme gerekmez).

# App Center distribute
# Distribute app builds to testers and users via Visual Studio App Center
- task: AppCenterDistribute@1
  inputs:
    serverEndpoint: 
    appSlug: 
    appFile: 
    #symbolsOption: 'Apple' # Optional. Options: apple
    #symbolsPath: # Optional
    #symbolsPdbFiles: '**/*.pdb' # Optional
    #symbolsDsymFiles: # Optional
    #symbolsMappingTxtFile: # Optional
    #symbolsIncludeParentDirectory: # Optional
    #releaseNotesOption: 'input' # Options: input, file
    #releaseNotesInput: # Required when releaseNotesOption == Input
    #releaseNotesFile: # Required when releaseNotesOption == File
    #isMandatory: false # Optional
    #distributionGroupId: # Optional

Apple App Store

Apple App Store uzantısını yükleyin ve aşağıdaki görevleri kullanarak uygulamayla etkileşimi App Store. Varsayılan olarak, bu görevler yapılandırılan bir hizmet bağlantısını kullanarak Apple'da kimlik doğrulaması gerçekleştirebilir.

Yayınla

App Store'daki beta uygulamaları veya üretim uygulamaları için mevcut iOS TestFlight yayınlarını otomatikleştirmek için App Store.

Apple kimlik doğrulaması bölgeye özgü olduğu ve fastlane oturum belirteçlerinin hızla süresi dolsa da yeniden oluşturularak yeniden yapılandırılması gerektir, bu görevi Apple iki faktörlü kimlik doğrulaması ile kullanma sınırlamalarına bakın.

- 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

Yükseltme

Daha önce App Store bir uygulamanın iTunes'dan Bağlan yükseltme işlemini otomatikleştirmek için App Store.

- 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