Proses distribusi aplikasi iOS yang kita buat, biasanya memerlukan proses yang cukup panjang, mulai dari melakukan pengujian, code signing, increment build number, melakukan build, menyiapkan screenshot, kemudian yang terakhir kita perlu untuk meng-upload ke Testflight dan AppStore.
Untuk mengatasi hal tersebut, kita bisa menerapkan CI/CD pada project kita.
CI/CD merupakan singkatan dari Continuous Integration / Continuous Delivery atau Deployment. CI/CD dapat membantu kita dalam membuat otomatisasi proses distribusi aplikasi.
Jadi, ketika kita melakukan perubahan kode pada Git Repository, proses distribusi aplikasi akan berjalan secara otomatis.
Sehingga kita bisa lebih fokus dalam mengembangkan aplikasi daripada menghabiskan waktu untuk melakukan hal-hal yang repetitif seperti distribusi aplikasi.
Berikut adalah beberapa manfaat yang akan kita dapatkan apabila kita menerapkan CI/CD:
Lebih hemat waktu
Karena semua proses distribusi aplikasi dilakukan secara otomatis di cloud, maka kita akan punya lebih banyak waktu untuk melakukan hal-hal lain seperti mengembangkan fitur baru atau melakukan bug fixing.
Mempercepat distribusi aplikasi
Proses distribusi aplikasi juga akan menjadi lebih cepat karena tiap kali kita melakukan perubahan kode, maka proses distribusi akan dilakukan secara otomatis tanpa perlu khawatir ada step yang terlewat.
Mendeteksi bug lebih cepat
Jika kita menerapkan Unit Testing pada aplikasi kita, mungkin kita bisa menambahkan proses Testing pada pipeline CI yang kita buat. Sehingga apabila ada bug akan terdeteksi lebih cepat pada saat deployment, dan apabila ada bug maka kita perlu melakukan fixing agar pipeline CI yang kita buat bisa berjalan.
Siapa saja bisa melakukan distribusi aplikasi
Bayangkan jika dalam 1 team, hanya satu orang saja yang mengerti dan mempunyai provisioning profile untuk melakukan deployment. Lalu pada suatu hari seseorang tersebut sedang cuti, dan kebetulan ada kebutuhan untuk mendistribusikan aplikasi. 😅
Nah, dengan menerapkan CI/CD, semua orang dalam team bisa melakukan distribusi dan tidak terlalu bergantung dengan satu atau beberapa orang saja.
Menghindari Human Error
Jika kita melakukan deployment secara manual, ada step-step yang bisa jadi kita terlewat atau melakukan kesalahan, misalnya kita ingin build untuk environment Staging tapi yang kita build malah untuk environment Development, dll.
Ada beberapa tools yang bisa kita gunakan untuk membuat CI/CD. Seperti AppCenter, Fastlane, Codemagic, Jenkins, CircleCI, Travis CI, Github Actions, dll.
Namun pada tutorial kali ini, kita akan menggunakan AppCenter. Alasannya karena AppCenter menyediakan layanan untuk membuat CI/CD secara gratis. 🥳
Selain itu, AppCenter juga menyediakan Graphical User Interface (GUI) untuk melakukan CI/CD, sehingga kita tidak perlu menuliskan script CI.
NOTE: AppCenter gratis selama kita menghabiskan kurang dari 240 menit build time per bulan.
Jika sebelumnya kamu belum pernah melakukan registrasi AppCenter, Silakan buka https://appcenter.ms/create-account dan buatlah akun baru.
Klik button "Add New" di sebelah kanan, kemudian isi nama aplikasi dan tipe rilis.
Pilih OS "iOS", dan platform "Objective-C / Swift"
Jika sudah membuat aplikasi di AppCenter, selanjutnya kita akan menghubungkan ke Repository di mana source code aplikasi tersebut berada.
Silakan klik menu "Build", pilih service git, dan pilih repositorynya.
Pada menu "Build", silakan klik menu "Config"
Berikut adalah beberapa konfigurasi build yang bisa kita lakukan di AppCenter:
Build Script digunakan jika kita ingin menjalankan command terkait dengan build project. Contohnya adalah kalau kita menggunakan Cocoapods sebagai Dependency Manager, maka kita perlu menjalankan command pod install terlebih dahulu, nah kita bisa memasukkan command-command tersebut ke dalam Build Scripts.
Kamu bisa mempelajari Build Scripts lebih lanjut di sini: https://learn.microsoft.com/en-us/appcenter/build/custom/scripts
Di menu ini, kita bisa menentukan apakah kita ingin melakukan build tiap kali kita melakukan perubahan code di git atau kita trigger secara manual.
Agar kita tidak perlu menaikkan build number tiap kali ingin build aplikasi, kita bisa mengaktifkan fitur "Automatically increment build number".
Kita juga bisa menentukan formatnya, apakah ingin Build ID (Number) atau Timestamp.
Agar kita bisa melakukan distribusi ke Testflight atau ke AppStore, kita perlu mengaktifkan "Sign Build".
Setelah diaktifkan kita diminta untuk memberikan 2 file berikut:
Provisioning Profile (.mobileprovision)
Certificate (.p12)
Untuk mendapatkan file Certificate (.p12), kita perlu membuat Certificate Signing Request (CSR) terlebih dahulu.
File CSR mempunyai format .certSigningRequest
Silakan buka aplikasi "Keychain Access".
Pilih menu Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.
Setelah itu akan muncul dialog "Certificate Assistant", isi "Email Address", Common Name (Key untuk Certificate kita), CA Email Address biarkan kosong, dan "Request is" pilih "Saved to disk".
Untuk mendapatkan file Provisioning Profile, kita perlu membuat Certificate terlebih dahulu.
Silakan buka https://developer.apple.com/account kemudian pilih menu "Certificates"
Buat Certificate baru. Pada section "Software", pilih "Apple Distribution". klik "Continue".
Selanjutnya kita akan diminta untuk memberikan file Certificate Signing Request (CSR). Silakan upload file CSR yang telah kita buat tadi.
Terakhir klik "Continue", dan download certificate nya. maka file .cer akan terdownload. Nah, tapi yang dibutuhkan oleh AppCenter adalah file .p12 bukan .cer
Untuk mendapatkan file .p12, silakan klik 2x file .cer yang baru saja kita download, maka aplikasi "Keychain Access" akan terbuka. Pilih certificate kita -> klik kanan -> Export. Maka file .p12 akan terdownload.
Untuk membuat file Provisioning Profile (.mobileprovision) Silakan buka https://developer.apple.com/account kemudian klik menu "Profiles"
Tambahkan "Profile" baru
Pada section "Distribution" pilih "App Store"
Pilih "App ID"
Pilih certificate yang telah kita buat tadi
Masukkan nama provisioning profile, misalnya "DemoAppCenter Distribution"
Klik "Generate" -> "Download"
Di AppCenter ada 2 metode untuk melakukan distribusi, yaitu Group (Distribution Tools milik AppCenter) dan Store (ke AppStore Connect).
Silakan pilih "Store" dan hubungkan ke akun AppStore Connect kita. Selanjutnya kita akan diminta untuk memberikan API Key dari AppStore Connect.
Pilih menu "Keys"
Klik button "+" untuk menambahkan key baru
Setelah menambahkan key baru, silakan klik "Download", maka file .p8 akan terdownload.
Silakan upload file .p8 yang telah kita download, masukkan Key Name, Issuer ID, dan Key ID. Kamu bisa melihat ketiga informasi tersebut di sini: https://appstoreconnect.apple.com/access/api
Setelah berhasil, silakan kembali ke menu "Build" pada AppCenter. Lalu di bagian Build Configuration -> Distribute Build -> Store -> Pilih "App Store Connect Users" -> Save.
Sekarang tiap kali kita melakukan perubahan code di repository, secara otomatis AppCenter akan melakukan build dan distribusi aplikasi ke Testflight!
Untuk mengujinya, silakan lakukan perubahan code dan push ke remote repository.
Apabila kamu menemukan error seperti ini:
1error: requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor.2** ARCHIVE FAILED **
Silakan buka projectmu melalui "Xcode"
Klik Target -> Signing & Capabilities -> Release -> Uncheck "Automatically manage signing"
Pilih Provisioning Profile yang sama dengan yang ada di AppCenter.
Oke mungkin itu saja yang bisa saya bagikan kali ini, kalau kamu merasa artikel ini bermanfaat silakan Like & Share artikel ini ke teman-teman kamu atau jika kamu punya pertanyaan, tulis aja di kolom komentar, Thank you! 😁 🙏
Baca juga:
Always open to new ideas. 🕊️
Articles that you might want to read.
Otomatisasi build, testing, dan deployment aplikasi iOS ke Testflight & AppStore.
Otomatisasi build, testing, screenshot, dan deployment aplikasi iOS ke Testflight & AppStore.
Dokumentasikan project-mu dengan DocC!