Xcode uygulamaları derleme, test etme ve dağıtma

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Bu hızlı başlangıçta Azure Pipelines'da YAML işlem hatları ile Xcode projeleri derleme ve dağıtma adımları gösterilmektedir.

Önkoşullar

  • İşlem hatları oluşturma ve uygulama dağıtma izninizin olduğu bir Azure DevOps kuruluşu ve projesi.
  • GitHub deposundaki bir Xcode 9+ projesi ve uygulaması. Daha fazla bilgi için bkz . Uygulama için Xcode Projesi Oluşturma.

İşlem hattını oluşturma

Önemli

GitHub yordamları sırasında, oturum açmak, Azure Pipelines'ı yüklemek veya Azure Pipelines'ı yetkilendirmek için GitHub hizmet bağlantısı oluşturmanız veya GitHub'a yönlendirilmeniz istenebilir. İşlemi tamamlamak için ekrandaki yönergeleri izleyin. Daha fazla bilgi için bkz . GitHub depolarına erişim.

  1. Azure DevOps projenizde İşlem Hatları>Yeni işlem hattı'nı veya projenin ilk işlem hattıysa İşlem hattı oluştur'u seçin.
  2. Kaynak kodunuzun konumu olarak GitHub'ı seçin.
  3. Depo seçin ekranında Xcode projenizin deposunu seçin.
  4. İşlem hattınızı yapılandırın ekranında Xcode'ı seçin.

Azure Pipelines, Xcode şablonunu temel alan bir başlangıç işlem hattı sağlar. kodu azure-pipelines.yml gözden geçirin.

Derleme ortamı

Xcode, Azure Pipelines'da Microsoft tarafından barındırılan macOS aracılarına önceden yüklenmiştir, bu nedenle herhangi bir altyapı ayarlamanız gerekmez. Önceden yüklenmiş Xcode'un tam sürümleri için bkz . Microsoft tarafından barındırılan aracılar yazılımı.

pool azure-pipelines.yml dosyanızın üst kısmındaki düğüm uygun aracı havuzunu seçer.

pool:
  vmImage: 'macOS-latest'

Xcode derleme görevi

Xcode görevi macOS üzerinde bir Xcode çalışma alanı oluşturur, test eder veya arşivler ve isteğe bağlı olarak bir uygulamayı paketleyebilir. Starter azure-pipelines.yml dosyasındaki Xcode adımı, iOS projesini Simülatör için varsayılan şemasını kullanarak ve paketlemeden oluşturur. Proje yapılandırmanızla eşleşecek şekilde değerleri değiştirebilir ve parametreler ekleyebilirsiniz.

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

İşlem hattını kaydetme ve çalıştırma

azure-pipelines.yml'da kodu gözden geçirmeyi bitirdiğinizde Kaydet ve çalıştır'ı seçin.

Yeni bir YAML işlem hattında Kaydet ve çalıştır düğmesinin ekran görüntüsü.

İsteğe bağlı olarak, İşleme iletisini düzenleyin ve bir açıklama sağlayın. Ardından Kaydet'i seçip yeniden çalıştırarak azure-pipelines.yml dosyasını deponuza işleyip bir derleme başlatın.

Derleme çalıştırması sayfasında derleme ayrıntıları ve ilerleme durumu gösterilir. İşlem hattınızın nasıl çalıştığını izlemek istiyorsanız sayfanın alt kısmındaki İş'i seçin.

Artık deponuzda özelleştirmeye hazır azure-pipelines.yml çalışan bir YAML işlem hattınız var.

İşlem hattınızı özelleştirme

İşlem hattınızda değişiklik yapmak için işlem hattı sayfasında Düzenle'yi seçin. Aşağıdaki bölümlerde Xcode işlem hattınızı özelleştirmenin bazı yaygın yolları açıklanmaktadır.

İmzalama ve sağlama görevleri ekleme

Bir cihazda çalıştırılabilmesi veya App Store'da yayımlanabilmesi için bir Xcode uygulamasının imzalanması ve sağlanması gerekir. İmzalama ve sağlama işleminin P12 imzalama sertifikanıza ve bir veya daha fazla sağlama profiline erişmesi gerekir. Daha fazla bilgi için bkz . Mobil uygulamanızı imzalama.

Sertifikayı ve profili derleme sırasında Xcode'un kullanımına açmak için, işlem hattınıza Apple Sertifikasını Yükle ve Apple Sağlama Profili Yükle görevlerini ekleyin.

Kartaj ortam değişkeni kullanma

Projeniz özel bir Carthage deposuyla Carthage kullanıyorsa, depoya erişimi olan bir belirtecin değeriyle adlı GITHUB_ACCESS_TOKEN ortam değişkenini kullanarak kimlik doğrulamasını ayarlayabilirsiniz. Carthage bu ortam değişkenlerini otomatik olarak algılar ve kullanır.

Gizli belirteci doğrudan işlem hattı YAML'nize eklemeyin. Bunun yerine, işlem hattı sayfasında Değişkenler bölmesini açmak ve bu belirteç için bir değişken oluşturmak için Değişkenler'i seçin. Değişkenin değerini şifrelemek için kilit simgesini etkinleştirdiğinizden emin olun. Daha fazla bilgi için bkz . Gizli dizi değişkenlerini ayarlama.

Aşağıdaki işlem hattı kodu, ortam değişkeninin değeri GITHUB_ACCESS_TOKEN için adlı myGitHubAccessToken bir gizli dizi değişkeni kullanır.

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

Azure tarafından barındırılan cihazlarda test edin

Uygulamanızı Visual Studio App Center'da barındırılan bir iOS cihaz laboratuvarında test etmek için işlem hattınıza App Center Test görevini ekleyin.

Bu görev, test laboratuvarını kullanmaya devam etmek için 30 gün sonra ücretliye dönüştürülmesi gereken bir App Center ücretsiz deneme hesabı gerektirir. Bu görevi kullanmadan önce bir App Center hesabına kaydolun.

Aşağıdaki örnekte bir App Center test paketi çalıştırılır. Görev, ayarlamanız gereken bir hizmet bağlantısı kullanır.

Tam görev söz dizimi ve başvurusu için bkz . App Center Test görevi. Daha fazla bilgi için bkz . Ui Testi için Azure DevOps kullanma.

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

Yapıtları derleme kaydıyla tutma

Derleme kaydıyla iOS AppStore Paketi (IPA) dosyanızı depolamak veya sonraki işlem hatlarında test etmek ve dağıtmak için dosyaları kopyalama ve derleme yapıtlarını yayımlama görevlerini işlem hattınıza ekleyin. Daha fazla bilgi için bkz . İşlem hattı yapıtlarını yayımlama ve indirme.

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

App Center'a dağıtma

Bir uygulamayı bir test eden veya beta kullanıcısı grubuna dağıtmak veya uygulamayı Intune'a veya Apple App Store'a yükseltmek için App Center Distribute görevini ekleyin. Görev, ücretsiz olarak kalan ücretsiz bir App Center hesabı gerektirir.

Aşağıdaki örnek bir uygulamayı kullanıcılara dağıtır. Tam görev söz dizimi ve başvurusu için bkz . App Center Distribute. Daha fazla bilgi için bkz . App Center ile Azure DevOps Derlemelerini Dağıtma.

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

Apple App Store uzantısını yükleme ve Apple App Store'a dağıtma

Apple App Store ile etkileşimi otomatikleştirmek için Apple App Store uzantısını yükleyin ve işlem hattınızda aşağıdaki görevleri kullanın. Varsayılan olarak, bu görevler yapılandırmanız gereken bir hizmet bağlantısını kullanarak Apple'da kimlik doğrulaması yapar.

Mevcut iOS TestFlight beta uygulamalarına veya App Store'daki üretim uygulamalarına güncelleştirmelerin yayımlanmasını otomatikleştirmek için App Store Yayın görevi ekleyin.

Bu görevi Apple iki öğeli kimlik doğrulamasıyla kullanmanın sınırlamaları vardır. Apple kimlik doğrulaması bölgeye özgüdür ve fastlane oturum belirteçlerinin süresi hızla dolar ve yeniden oluşturulup yeniden yapılandırılması gerekir.

- 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

Daha önce iTunes Connect'ten App Store'a gönderilen bir uygulamanın yükseltılmasını otomatikleştirmek için App Store Yükseltme görevini ekleyin.

- 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