
Bagaimana GitLab dengan fastlane mengumpulkan, menandatangani, dan menerbitkan aplikasi iOS di App Store.
Baru-baru ini kami memiliki pos tentang cara cepat membangun dan menjalankan aplikasi Android dengan GitLab dan fastlane . Di sini kita akan melihat bagaimana membangun dan menjalankan aplikasi iOS dan menerbitkannya ke TestFlight. Lihat betapa kerennya saya membuat perubahan pada iPad Pro dengan GitLab Web IDE , mengambil versi build dan mendapatkan pembaruan versi uji aplikasi pada iPad Pro yang sama tempat saya mengembangkannya.
Di sini kita mengambil aplikasi iOS sederhana di Swift yang dengannya saya merekam video.
Beberapa kata tentang konfigurasi Apple Store
Kita akan membutuhkan aplikasi di App Store, sertifikat distribusi, dan profil inisialisasi untuk mengikat semuanya.
Yang paling sulit di sini adalah mengonfigurasi hak tanda tangan di App Store. Saya harap Anda bisa mengetahuinya sendiri. Jika Anda seorang pemula, saya akan mengarahkan Anda ke arah yang benar, tetapi di sini kami tidak akan berbicara tentang seluk beluk mengelola sertifikat Apple, dan mereka terus berubah. Posting ini akan membantu Anda memulai.
Aplikasi saya
Anda memerlukan aplikasi di App Store Connect sehingga Anda memiliki ID untuk konfigurasi .xcodebuild
. Profil dan ID aplikasi menggabungkan perakitan kode, harga, dan ketersediaan, serta konfigurasi TestFlight untuk mendistribusikan aplikasi uji kepada pengguna. Jangan melakukan pengujian publik, pribadi sudah cukup jika Anda memiliki grup kecil, pengaturan sederhana dan tidak memerlukan izin tambahan dari Apple.
Profil Inisialisasi
Selain pengaturan aplikasi, Anda memerlukan distribusi iOS dan kunci pengembangan yang dibuat di bagian Certificates, Identifiers & Profiles di konsol Pengembang Apple. Semua sertifikat ini dapat digabungkan dalam profil inisialisasi.
Pengguna autentikasi memerlukan kemampuan untuk membuat sertifikat, jika tidak, Anda akan melihat kesalahan dalam langkah-langkah sertifikat dan desahan .
Pilihan lain
Selain metode sederhana ini, ada cara lain untuk mengonfigurasi sertifikat dan profil. Jadi, jika Anda bekerja secara berbeda, Anda mungkin harus membangun kembali. Yang paling penting, Anda akan memerlukan konfigurasi .xcodebuild
, yang akan menunjuk ke file yang diperlukan, dan gantungan kunci harus tersedia di komputer build untuk pengguna dengan nama pelari yang berfungsi. Kami menggunakan fastlane untuk tanda tangan digital, dan jika ada masalah atau Anda ingin tahu lebih banyak, lihat dokumentasi terperinci mereka tentang tanda tangan digital .
Dalam contoh ini, saya menggunakan pendekatan cert dan mendesah , tetapi untuk aplikasi nyata, pertandingan mungkin lebih baik.
Mempersiapkan GitLab dan fastlane
Mempersiapkan CI Runner
Setelah mengumpulkan semua data ini, kami melanjutkan ke konfigurasi pelari GitLab pada perangkat MacOS. Sayangnya, membuat aplikasi iOS hanya nyata di MacOS. Tetapi banyak hal dapat berubah, dan jika Anda menunggu kemajuan di bidang ini, awasi proyek-proyek seperti xcbuild dan isign , dan tugas internal kami, gitlab-ce # 57576 .
Menyiapkan pelari sangat sederhana. Ikuti instruksi saat ini untuk mengatur GitLab Runner di macOS .
Catatan Pelari harus menggunakan shell
executable. Ini diperlukan untuk membangun iOS di macOS agar dapat bekerja secara langsung sebagai pengguna, dan bukan melalui wadah. Jika Anda menggunakan shell
, perakitan dan pengujian dilakukan atas nama pengguna pelari, tepat di host perakitan. Ini tidak seaman wadah, jadi yang terbaik adalah menelusuri dokumentasi keamanan sehingga Anda tidak kehilangan 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
Gantungan Kunci Apple harus dikonfigurasikan pada host ini dengan akses ke kunci yang perlu dibuat Xcode. Cara termudah untuk menguji ini adalah masuk sebagai pengguna yang mulai membangun dan mencoba membangun secara manual. Jika sistem meminta akses ke gantungan kunci, pilih Selalu Bolehkan CI berfungsi. Mungkin layak untuk masuk dan mengamati pasangan pipa pertama, untuk memastikan bahwa mereka tidak lagi meminta banyak kunci. Masalahnya adalah bahwa Apple tidak membuatnya lebih mudah bagi kita untuk bekerja dengan mode otomatis, tetapi ketika Anda memperbaikinya, semuanya akan baik-baik saja.
fastlane init
Untuk menggunakan fastlane dalam suatu proyek, jalankan fastlane init
. Cukup ikuti instruksi untuk menginstal dan memulai fastlane , terutama di bagian Gemfile , karena kita memerlukan peluncuran yang cepat dan dapat diprediksi melalui pipa CI otomatis.
Di direktori proyek, jalankan perintah ini:
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 ID Apple dan ID aplikasi sudah benar.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app apple_id("your-email@your-domain.com") # Your Apple email address
2. fastlane/Fastfile
Fastfile
mendefinisikan langkah-langkah pembuatan. Kami menggunakan banyak fitur fastlane bawaan, jadi semuanya jelas di sini juga. Buat satu baris yang menerima sertifikat, bangun, dan muatkan ke TestFlight. Anda dapat membagi proses ini menjadi tugas yang berbeda, jika perlu. Semua operasi ini ( get_certificates
, get_provisioning_profile
, gym
, dan upload_to_testflight
) sudah termasuk dalam fastlane.
Tindakan get_certificates
dan get_provisioning_profile
terkait dengan pendekatan penandatanganan sertifikat dan desahan . Jika Anda menggunakan kecocokan atau sesuatu yang lain, buat 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 output default dan memasukkan output ke folder saat ini. Ini menyederhanakan CI. Jika tertarik, baca tentang gym
dan parameternya dalam dokumentasi .
https://docs.fastlane.tools/actions/gym/
.gitlab-ci.yml
Jadi, kami memiliki pelari CI untuk proyek tersebut, dan kami siap untuk menguji jalur pipa. Mari kita lihat apa yang kita miliki di .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
Semuanya hebat! Kami mengatur format UTF-8 untuk fastlane, seperti yang diperlukan , menggunakan strategi clone
dengan shell
executable sehingga kami memiliki ruang kerja yang bersih untuk setiap perakitan, dan cukup memanggil flappybuild
fastlane, seperti yang terlihat di atas. Hasilnya, kami mendapatkan perakitan, tanda tangan, dan penyebaran perakitan terakhir di TestFlight.
Kami juga mendapatkan artefak dan menyimpannya dengan perakitan. Perhatikan bahwa format .ipa
adalah executable ARM yang ditandatangani yang tidak berjalan dalam simulator. Jika Anda ingin output untuk simulator, cukup tambahkan target perakitan yang memproduksinya, lalu sertakan dalam jalur ke artefak.
Variabel lingkungan lainnya
Ada beberapa variabel lingkungan yang semuanya berfungsi.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
dan FASTLANE_SESSION
Otentikasi di App Store dan mengunggah ke TestFlight memerlukan otentikasi untuk fastlane. Untuk melakukan ini, buat kata sandi untuk aplikasi yang akan digunakan dalam CI. Detail di sini .
Jika Anda memiliki otentikasi dua faktor, buat variabel FASTLANE_SESSION
(instruksi di sana).
FASTLANE_USER
dan FASTLANE_PASSWORD
Agar cert dan desahan untuk memanggil profil inisialisasi dan sertifikat sesuai permintaan, variabel FASTLANE_PASSWORD
dan FASTLANE_PASSWORD
harus ditetapkan. Detail di sini . Ini tidak perlu jika Anda menggunakan metode penandatanganan yang berbeda.
Kesimpulannya
Anda dapat melihat bagaimana semuanya bekerja dalam contoh sederhana saya .
Semoga ini bisa membantu dan saya menginspirasi Anda untuk bekerja dengan build iOS di proyek GitLab. Berikut adalah beberapa tips CI untuk fastlane, untuk berjaga-jaga. Anda mungkin ingin menggunakan CI_BUILD_ID
(untuk bangunan bertahap) untuk secara otomatis menambah versi .
Fitur keren lain dari fastlane adalah screenshot otomatis untuk App Store, yang sangat mudah diatur.
Bagikan pengalaman Anda dalam komentar dan bagikan ide untuk meningkatkan GitLab untuk pengembangan aplikasi iOS.