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 Xcode Cloud, AppCenter, Fastlane, Codemagic, Jenkins, CircleCI, Travis CI, Github Actions, dll.
Namun pada tutorial kali ini, kita akan menggunakan Xcode Cloud. Alasannya karena Xcode Cloud menyediakan layanan untuk membuat CI/CD secara gratis. 🥳
Selain itu, Xcode Cloud juga menyediakan Graphical User Interface (GUI) yang terintegrasi langsung dengan Xcode, serta mempunyai cukup banyak fitur lainnya seperti Schedule Build, Menjalankan Test secara paralel, dll.
NOTE: Xcode Cloud gratis selama kita menghabiskan kurang dari 25 jam build time per bulan.
Untuk menggunakan Xcode Cloud, ada beberapa persyaratan yang harus kita penuhi, yaitu:
Telah mendaftar Apple Developer Program
Xcode versi 14.0.1 atau lebih baru
Menggunakan Build System versi baru (Xcode 10)
Menggunakan "Automatic Code Signing"
Menggunakan Source Code Management (SCM) yang didukung oleh Xcode Cloud, seperti Github, Gitlab dan Bitbucket.
Workflow adalah konfigurasi untuk setiap step yang ingin dilakukan dalam proses CI/CD. Berikut adalah beberapa menu yang ada di dalam Workflow:
General
Environment
Start Condition
Actions
Post Actions
Untuk melakukan setup Workflow pada project kita, silakan buka projectnya di Xcode, kemudian pilih Report Navigator, kemudian pilih tab "Cloud", lalu klik "Get Started".
Pada menu General, kita bisa mengedit nama dari Workflow yang telah dibuat, deskripsi, repository, dan memilih project / workspace.
Pada menu Environment, kita bisa memilih versi Xcode dan macOS yang akan digunakan dalam proses CI/CD kita. Silakan pilih versi yang spesifik untuk menghindari behavior yang tidak diinginkan pada versi terbaru dari Xcode / macOS.
Lamu juga bisa mencentang opsi "Clean", jika tercentang Xcode akan melakukan build project kita tanpa cache.
Dan jika kamu ingin menaruh Environment Variable seperti API_KEY, BASE_URL, dll. Kamu bisa menambahkannya di menu ini.
Di menu ini, kita bisa mengatur kapan CI/CD akan dijalankan, Xcode Cloud menyediakan beberapa opsi yang dapat kita pilih, yaitu:
Ketika ada perubahan Pull Request (PR).
Ketika ada perubahan Tag.
Dijadwalkan, misalnya pada hari senin-jumat jam 5.30 sore.
Trigger Manual.
Kita juga bisa mencentang "Auto-cancel Build". Jadi, ketika ada build yang sedang berjalan dan kebetulan ada build baru di branch yang sama, maka Xcode Cloud akan secara otomatis membatalkan build yang sedang berjalan, dan akan melakukan build baru
Pada menu Actions, kita bisa melakukan konfigurasi untuk setiap step yang akan dilakukan dalam proses CI/CD. Seperti:
Kita bisa mengatur Platform dan Scheme.
Pada bagian Test, Kita bisa menentukan apakah kita ingin melakukan deployment hanya jika Test yang kita buat telah lolos. Kita juga bisa memilih versi iPhone dan iOS yang ingin kita gunakan untuk menjalankan Test kita.
Pada bagian Analyze, Kita bisa menentukan apakah kita ingin melakukan deployment hanya jika Static Analyzer telah lolos. Static Analyzer adalah tool untuk mendeteksi source code kita tanpa menjalankannya, Static Analyzer dapat mendeteksi Infinite Loops, Variable yang tidak terpakai, dan masih banyak lagi.
Kita bisa melakukan konfigurasi Persiapan Deployment kita, Xcode Cloud menyediakan 3 opsi, yaitu:
None
Testflight (Internal Testing)
Testflight (External Testing) & AppStore
Di menu ini, kita bisa menambahkan sebuah action yang akan dijalankan setelah step Build, Test, Analyze, dan Archive telah berhasil. Contohnya kita ingin melakukan:
Mengirim Notifikasi melalui Email / Slack kepada Team Developer jika proses CI/CD kita gagal.
Membuat aplikasi beta kita tersedia di Testflight (Internal & External Testing).
Untuk mengaktifkan "External Testing", pastikan opsi "Deployment Preparation" di menu Actions -> Archive telah diset menjadi "Testflight & AppStore"
Kita bisa menambahkan Test Notes ketika kita mendistribusikan versi beta aplikasi kita dari Xcode Cloud melalui Testflight untuk memberikan detail mengenai perubahan apa saja dari aplikasi kita serta scope yang perlu ditest.
Test Notes yang telah kita buat akan muncul pada bagian "What to test" di aplikasi Testflight. Kita bisa membuat Test Notes untuk lebih dari 1 bahasa dan locale.
Berikut adalah beberapa informasi yang dapat kita cantumkan dalam Test Notes:
Fitur yang kita tambahkan dalam aplikasi kita
Issue atau Bug yang telah kita perbaiki.
Message dari commit terkait dengan perubahan kode kita.
Step untuk membuat Test Notes:
Buka Project atau Workspace di Xcode.
Buat group baru bernama "Testflight" di hirarki terluar project kita.
Buat file baru di dalam group "Testflight" bernama "WhatToTest.[LOCALE].txt". Untuk [LOCALE], gunakan kode bahasa dan negara yang digunakan dalam konten file tersebut. Contohnya, gunakan "WhatToTest.en-US.txt"
Isi konten dari file tersebut.
Commit dan Push file tersebut ke Remote Repository.
Pada deployment selanjutnya, Xcode Cloud akan secara otomatis mencari file ini, dan menambahkan isi file tersebut pada bagian "What to test" di aplikasi Testflight.
Xcode Cloud menetapkan sebuah build number pada saat proses CI/CD kita berjalan. Build Number adalah sebuah angka yang akan ditambah +1 oleh Xcode Cloud di setiap build.
Namun, pada saat kita melakukan build aplikasi kita tidak menggunakan Xcode Cloud (contohnya kita melakukan build secara manual), Build Number yang ada di Xcode Cloud tidak lagi sinkron, Jadi kita perlu mengkonfigurasi Build Number yang ada di Xcode Cloud.
Berikut adalah step untuk mengedit Build Number di Xcode Cloud:
Kunjungi website App Store Connect.
Klik tab "Xcode Cloud", kemudian pilih "Settings" di sidebar
Klik tab Build Number
Klik tombol "Edit"
Masukkan Build Number selanjutnya, kemudian klik tombol "Save"
Dengan Xcode Cloud, kita bisa melakukan rollback aplikasi kita ke spesifik Build Number dengan sangat mudah!
Silakan klik menu "Report Navigator"
Pilih tab "Cloud"
Pilih spesifik Build Number yang kita ingin untuk deploy ulang.
Klik tombol "Rebuild"
Maka, Xcode Cloud akan melakukan rebuild dan deploy aplikasi kita berdasarkan Build Number yang kita pilih.
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 dan deployment aplikasi iOS ke Testflight.
Otomatisasi build, testing, screenshot, dan deployment aplikasi iOS ke Testflight & AppStore.
Menulis kode yang mudah untuk di-test pada Swift.