Bagikan melalui


Membangun, menguji, dan menyebarkan aplikasi Xcode

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Mulai cepat ini menunjukkan kepada Anda cara membangun dan menyebarkan proyek Xcode dengan alur YAML di Azure Pipelines.

Prasyarat

  • Organisasi dan proyek Azure DevOps tempat Anda memiliki izin untuk membuat alur dan menyebarkan aplikasi.
  • Proyek dan aplikasi Xcode 9+ di repositori GitHub. Untuk informasi selengkapnya, lihat Membuat Proyek Xcode untuk Aplikasi.

Membuat alur

Penting

Selama prosedur GitHub, Anda mungkin diminta untuk membuat koneksi layanan GitHub atau dialihkan ke GitHub untuk masuk, menginstal Azure Pipelines, atau mengotorisasi Azure Pipelines. Ikuti instruksi di layar untuk menyelesaikan proses. Untuk informasi selengkapnya, lihat Akses ke repositori GitHub.

  1. Dalam proyek Azure DevOps Anda, pilih Alur Alur> baru, atau Buat alur jika alur ini adalah yang pertama dalam proyek.
  2. Pilih GitHub sebagai lokasi kode sumber Anda.
  3. Pada layar Pilih repositori, pilih repositori untuk proyek Xcode Anda.
  4. Pada layar Konfigurasikan alur Anda, pilih Xcode.

Azure Pipelines menyediakan alur pemula berdasarkan templat Xcode . Tinjau kode di azure-pipelines.yml.

Membangun lingkungan

Xcode telah diinstal sebelumnya pada agen macOS yang dihosting Microsoft di Azure Pipelines, sehingga Anda tidak perlu menyiapkan infrastruktur apa pun. Untuk versi Xcode yang tepat yang telah diinstal sebelumnya, lihat Perangkat lunak agen yang dihosting Microsoft.

Simpul pool di bagian atas file azure-pipelines.yml Anda memilih kumpulan agen yang sesuai.

pool:
  vmImage: 'macOS-latest'

Tugas build Xcode

Tugas Xcode membangun, menguji, atau mengarsipkan ruang kerja Xcode di macOS, dan secara opsional dapat mengemas aplikasi. Langkah Xcode dalam file starter azure-pipelines.yml membangun proyek iOS menggunakan skema defaultnya, untuk Simulator, dan tanpa kemasan. Anda dapat mengubah nilai dan menambahkan parameter agar sesuai dengan konfigurasi proyek Anda.

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

Menyimpan dan menjalankan alur

Saat Anda selesai meninjau kode di azure-pipelines.yml, pilih Simpan dan jalankan.

Cuplikan layar tombol Simpan dan jalankan di alur YAML baru.

Secara opsional, edit pesan Terapkan dan berikan deskripsi. Lalu pilih Simpan dan jalankan lagi untuk menerapkan file azure-pipelines.yml ke repositori Anda dan memulai build.

Halaman eksekusi build menunjukkan detail dan kemajuan build. Jika Anda ingin menonton alur Anda beraksi, pilih Pekerjaan di bagian bawah halaman.

Anda sekarang memiliki alur YAML yang berfungsi, azure-pipelines.yml, di repositori Anda yang siap untuk disesuaikan.

Mengkustomisasi alur Anda

Untuk membuat perubahan pada alur Anda, pilih Edit di halaman alur. Bagian berikut menjelaskan beberapa cara umum untuk menyesuaikan alur Xcode Anda.

Menambahkan tugas penandatanganan dan provisi

Aplikasi Xcode harus ditandatangani dan disediakan agar dapat berjalan di perangkat atau diterbitkan ke App Store. Proses penandatanganan dan provisi harus mengakses sertifikat penandatanganan P12 Anda dan satu atau beberapa profil provisi. Untuk informasi selengkapnya, lihat Menandatangani aplikasi seluler Anda.

Untuk membuat sertifikat dan profil tersedia untuk Xcode selama build, tambahkan tugas Instal Sertifikat Apple dan Instal Profil Provisi Apple ke alur Anda.

Menggunakan variabel lingkungan Carthage

Jika proyek Anda menggunakan Carthage dengan repositori Carthage privat, Anda dapat mengatur autentikasi dengan menggunakan variabel lingkungan bernama GITHUB_ACCESS_TOKEN dengan nilai token yang memiliki akses ke repositori. Carthage secara otomatis mendeteksi dan menggunakan variabel lingkungan ini.

Jangan tambahkan token rahasia langsung ke YAML alur Anda. Sebagai gantinya, pilih Variabel pada halaman alur untuk membuka panel Variabel dan membuat variabel untuk token ini. Pastikan untuk mengaktifkan ikon kunci untuk mengenkripsi nilai variabel. Untuk informasi selengkapnya, lihat Mengatur variabel rahasia.

Kode alur berikut menggunakan variabel rahasia bernama myGitHubAccessToken untuk nilai GITHUB_ACCESS_TOKEN variabel lingkungan.

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

Uji di perangkat yang dihosting Azure

Untuk menguji aplikasi Anda di lab perangkat iOS yang dihosting di Visual Studio App Center, tambahkan tugas Uji App Center ke alur Anda.

Tugas ini memerlukan akun uji coba gratis App Center , yang harus dikonversi menjadi berbayar setelah 30 hari untuk terus menggunakan lab pengujian. Daftar untuk akun App Center sebelum Anda menggunakan tugas ini.

Contoh berikut menjalankan rangkaian pengujian App Center. Tugas ini menggunakan koneksi layanan yang harus Anda siapkan.

Untuk sintaks dan referensi tugas lengkap, lihat Tugas Pengujian App Center. Untuk informasi selengkapnya, lihat Menggunakan Azure DevOps untuk Pengujian UI.

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

Menyimpan artefak dengan rekaman build

Untuk menyimpan file Paket AppStore (IPA) iOS Anda dengan catatan build atau pengujian dan menyebarkannya di alur berikutnya, tambahkan tugas Salin File dan Terbitkan Artefak Build ke alur Anda. Untuk informasi selengkapnya, lihat Menerbitkan dan mengunduh artefak alur.

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

Menyebarkan ke App Center

Untuk mendistribusikan aplikasi ke sekelompok penguji atau pengguna beta, atau mempromosikan aplikasi ke Intune atau Apple App Store, tambahkan tugas Distribusi App Center. Tugas ini memerlukan akun App Center gratis yang tetap gratis.

Contoh berikut mendistribusikan aplikasi kepada pengguna. Untuk sintaks dan referensi tugas lengkap, lihat Distribusi App Center. Untuk informasi selengkapnya, lihat Menyebarkan Azure DevOps Builds dengan 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'

Instal ekstensi Apple App Store dan sebarkan ke Apple App Store

Untuk mengotomatiskan interaksi dengan Apple App Store, instal ekstensi Apple App Store, lalu gunakan tugas berikut di alur Anda. Secara default, tugas-tugas ini mengautentikasi ke Apple dengan menggunakan koneksi layanan yang harus Anda konfigurasi.

Untuk mengotomatiskan rilis pembaruan ke aplikasi beta TestFlight iOS atau aplikasi produksi yang ada di App Store, tambahkan tugas Rilis App Store.

Ada batasan penggunaan tugas ini dengan autentikasi dua faktor Apple. Autentikasi Apple khusus wilayah, dan token sesi fastlane kedaluwarsa dengan cepat dan harus dibuat ulang dan dikonfigurasi ulang.

- 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

Untuk mengotomatiskan promosi aplikasi yang dikirim sebelumnya dari iTunes Connect ke App Store, tambahkan tugas Promosi App Store.

- 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