Menerbitkan aplikasi iOS ke App Store dengan GitLab dan fastlane

Menerbitkan aplikasi iOS ke App Store dengan GitLab dan fastlane

Bagaimana GitLab dengan fastlane mengumpulkan, menandatangani, dan menerbitkan aplikasi iOS ke App Store.

Kami baru saja melakukannya postingan tentang cara cepat membangun dan menjalankan aplikasi Android dengan GitLab dan jalur cepat. Di sini kita akan melihat cara membuat dan menjalankan aplikasi iOS dan mempublikasikannya ke TestFlight. Lihat betapa kerennya itu Saya membuat perubahan pada iPad Pro dengan GitLab Web IDE, Saya mengambil perakitan dan mendapatkan pembaruan ke versi pengujian aplikasi di iPad Pro yang sama tempat saya mengembangkannya.

Di sini kita akan mengambil aplikasi iOS sederhana di Swift, dengan siapa saya merekam video tersebut.

Beberapa kata tentang konfigurasi Apple Store

Kita memerlukan aplikasi App Store, sertifikat distribusi, dan profil penyediaan untuk menyatukan semuanya.

Hal tersulit di sini adalah mengatur hak penandatanganan di App Store. Saya harap Anda bisa memikirkannya sendiri. Jika Anda baru, saya akan mengarahkan Anda ke arah yang benar, tetapi kami tidak akan membicarakan seluk-beluk pengelolaan sertifikat Apple di sini, dan sertifikat tersebut terus berubah. Posting ini akan membantu Anda memulai.

Aplikasi saya

Anda memerlukan aplikasi di App Store Connect agar Anda memiliki ID untuk konfigurasi .xcodebuild. Profil dan ID aplikasi menggabungkan pembuatan kode, harga dan ketersediaan, serta konfigurasi TestFlight untuk mendistribusikan aplikasi pengujian kepada pengguna. Jangan lakukan pengujian publik, pengujian pribadi sudah cukup jika Anda memiliki grup kecil, pengaturan mudah, dan tidak memerlukan izin tambahan dari Apple.

Profil inisialisasi

Selain pengaturan aplikasi, Anda memerlukan kunci distribusi dan pengembangan iOS yang dibuat di bagian Sertifikat, Pengidentifikasi & Profil di konsol Pengembang Apple. Semua sertifikat ini dapat digabungkan menjadi profil penyediaan.

Pengguna yang akan diautentikasi harus dapat membuat sertifikat, jika tidak, langkah-langkahnya sertifikat dan mendesah Anda akan melihat kesalahan.

pilihan lain

Selain metode sederhana ini, ada cara lain untuk mengonfigurasi sertifikat dan profil. Jadi, jika Anda bekerja secara berbeda, Anda mungkin harus beradaptasi. Yang paling penting adalah Anda memerlukan konfigurasi .xcodebuild, yang akan menunjuk ke file yang diperlukan, dan gantungan kunci harus tersedia di komputer build untuk pengguna yang namanya menjalankan runner. Untuk tanda tangan digital kami menggunakan fastlane, dan jika ada masalah atau ingin tahu lebih lanjut, lihat detailnya dokumentasi tentang tanda tangan digital.

Dalam contoh ini saya menggunakan pendekatan sertifikat dan mendesah, tapi untuk penggunaan sebenarnya mungkin lebih cocok pertandingan.

Mempersiapkan GitLab dan fastlane

Mempersiapkan Pelari CI

Setelah mengumpulkan semua data ini, kami melanjutkan ke konfigurasi runner GitLab di perangkat MacOS. Sayangnya, Anda hanya bisa membuat aplikasi iOS di MacOS. Tapi segalanya bisa berubah, dan jika Anda mengharapkan kemajuan di bidang ini, pantau terus proyek-proyek seperti itu xcbuild и tanda, dan tugas internal kita gitlab-ce#57576.

Menyiapkan pelari sangat sederhana. Ikuti arus petunjuk untuk menyiapkan GitLab Runner di macOS.

Catatan. Pelari harus menggunakan program yang dapat dieksekusi shell. Hal ini diperlukan untuk membangun iOS di macOS agar dapat bekerja secara langsung sebagai pengguna, bukan melalui container. Jika Anda menggunakan shell, pembangunan dan pengujian dilakukan sebagai pengguna pelari, langsung di host pembangunan. Ini tidak seaman kontainer, jadi lebih baik jelajahi dokumentasi keselamatanagar kamu tidak melewatkan apa pun.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Rantai Kunci Apple harus dikonfigurasi pada host ini dengan akses ke kunci yang perlu dibuat oleh Xcode. Cara termudah untuk mengujinya adalah dengan login sebagai pengguna yang akan menjalankan build dan mencoba membuatnya secara manual. Jika sistem meminta akses rantai kunci, pilih Selalu Izinkan agar CI berfungsi. Mungkin ada baiknya untuk masuk dan mengamati beberapa saluran pipa pertama untuk memastikan mereka tidak meminta gantungan kunci lagi. Masalahnya adalah Apple tidak memberikan kemudahan bagi kita untuk menggunakan mode Otomatis, tetapi begitu Anda menjalankannya, semuanya akan baik-baik saja.

jalur cepat init

Untuk menggunakan fastlane dalam sebuah proyek, jalankan fastlane init. Ikuti saja petunjuk untuk menginstal dan menjalankan fastlane, terutama di bagian tentang File Permata, karena kita memerlukan peluncuran yang cepat dan dapat diprediksi melalui jalur CI otomatis.

Di direktori proyek Anda, jalankan perintah berikut:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane akan meminta konfigurasi dasar dan kemudian membuat folder fastlane di proyek dengan tiga file:

1. fastlane/Appfile

Tidak ada yang rumit di sini. Pastikan saja ID Apple dan ID Aplikasi Anda benar.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile mendefinisikan langkah-langkah pembangunan. Kami menggunakan banyak fitur bawaan fastlane, jadi semuanya jelas di sini juga. Kami membuat satu baris yang menerima sertifikat, melakukan perakitan dan mengunggahnya ke TestFlight. Anda dapat membagi proses ini menjadi beberapa tugas berbeda jika perlu. Semua operasi ini (get_certificates, get_provisioning_profile, gym и upload_to_testflight) sudah termasuk dalam fastlane.

Aktivitas get_certificates и get_provisioning_profile terkait dengan pendekatan penandatanganan sertifikat dan mendesah. Jika Anda menggunakan pertandingan atau apa pun, lakukan perubahan.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Ini adalah file opsional, tetapi saya membuatnya secara manual untuk mengubah direktori keluaran default dan menempatkan keluaran di folder saat ini. Ini menyederhanakan CI. Jika tertarik, baca tentang gym dan parameternya di dokumentasi.

https://docs.fastlane.tools/actions/gym/

Milik kita .gitlab-ci.yml

Jadi, kami memiliki pelari CI untuk proyek tersebut dan kami siap untuk menguji alurnya. Mari kita lihat apa yang kita miliki .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

Все отлично! Kami mengatur format ke UTF-8 untuk fastlane sesuai kebutuhan, gunakan strategi clone dengan menjalankan program shell, sehingga kami memiliki ruang kerja yang bersih untuk setiap perakitan, dan cukup menelepon flappybuild jalur cepat, seperti yang terlihat di atas. Hasilnya, kami mendapatkan perakitan, tanda tangan, dan penerapan perakitan terbaru di TestFlight.

Kami juga mendapatkan artefak dan menyimpannya dengan perakitan. Harap dicatat bahwa formatnya .ipa adalah executable ARM bertanda tangan yang tidak berjalan di simulator. Jika Anda menginginkan keluaran untuk simulator, cukup tambahkan target pembangunan yang menghasilkannya, lalu sertakan dalam jalur artefak.

Variabel lingkungan lainnya

Ada beberapa variabel lingkungan di sini yang membuat semuanya berfungsi.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Otentikasi untuk fastlane diperlukan untuk mengautentikasi di App Store dan mengunggah ke TestFlight. Untuk melakukannya, buatlah kata sandi untuk aplikasi yang akan digunakan di CI. Detail di sini.

Jika Anda memiliki autentikasi dua faktor, buatlah variabel FASTLANE_SESSION (instruksi di sana).

FASTLANE_USER и FASTLANE_PASSWORD

Bahwa sertifikat dan mendesah disebut profil inisialisasi dan sertifikat berdasarkan permintaan, Anda perlu mengatur variabel FASTLANE_USER и FASTLANE_PASSWORD. Detail di sini. Ini tidak diperlukan jika Anda menggunakan metode penandatanganan yang berbeda.

Sebagai kesimpulan

Anda dapat melihat cara kerjanya dalam contoh sederhana saya.

Saya harap ini bermanfaat dan menginspirasi Anda untuk bekerja dengan iOS build di proyek GitLab. Ini satu lagi Kiat CI untuk fastlane, untuk berjaga-jaga. Anda mungkin ingin menggunakan CI_BUILD_ID (untuk pembangunan tambahan) hingga secara otomatis menambah versi.

Fitur keren lainnya dari fastlane adalah tangkapan layar otomatis untuk App Store, yang pengaturannya sangat mudah.

Beri tahu kami di komentar tentang pengalaman Anda dan bagikan ide Anda untuk meningkatkan GitLab untuk pengembangan aplikasi iOS.

Sumber: www.habr.com

Tambah komentar