logo
hero image

CI/CD aplikasi iOS dengan Xcode Cloud

Otomatisasi build, testing, dan deployment aplikasi iOS ke Testflight & AppStore.
27 January 2024 · 8 Minutes

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.

Apa itu CI/CD ?

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.

Manfaat CI/CD

Berikut adalah beberapa manfaat yang akan kita dapatkan apabila kita menerapkan CI/CD:

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

Tools CI/CD

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.

Persyaratan Xcode Cloud

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.

1. Setup Workflow

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".

Setup WorkflowSetup Workflow

2. General

Pada menu General, kita bisa mengedit nama dari Workflow yang telah dibuat, deskripsi, repository, dan memilih project / workspace.

3. Environment

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.

4. Start Condition

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

5. Actions

Pada menu Actions, kita bisa melakukan konfigurasi untuk setiap step yang akan dilakukan dalam proses CI/CD. Seperti:

5.1 Build

Kita bisa mengatur Platform dan Scheme.

5.2 Test

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.

5.3 Analyze

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.

5.4 Archive

Kita bisa melakukan konfigurasi Persiapan Deployment kita, Xcode Cloud menyediakan 3 opsi, yaitu:

  • None

  • Testflight (Internal Testing)

  • Testflight (External Testing) & AppStore

6. Post Actions

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"

7. Test Notes

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:

  1. Buka Project atau Workspace di Xcode.

  2. Buat group baru bernama "Testflight" di hirarki terluar project kita.

  3. 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"

  4. Isi konten dari file tersebut.

  5. Commit dan Push file tersebut ke Remote Repository.

Test NotesTest Notes

Pada deployment selanjutnya, Xcode Cloud akan secara otomatis mencari file ini, dan menambahkan isi file tersebut pada bagian "What to test" di aplikasi Testflight.

8. Set Next Build Number

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:

  1. Kunjungi website App Store Connect.

  2. Klik tab "Xcode Cloud", kemudian pilih "Settings" di sidebar

  3. Klik tab Build Number

  4. Klik tombol "Edit"

  5. Masukkan Build Number selanjutnya, kemudian klik tombol "Save"

Set Build NumberSet Build Number

9. Rollback

Dengan Xcode Cloud, kita bisa melakukan rollback aplikasi kita ke spesifik Build Number dengan sangat mudah!

  1. Silakan klik menu "Report Navigator"

  2. Pilih tab "Cloud"

  3. Pilih spesifik Build Number yang kita ingin untuk deploy ulang.

  4. Klik tombol "Rebuild"

Maka, Xcode Cloud akan melakukan rebuild dan deploy aplikasi kita berdasarkan Build Number yang kita pilih.

RollbackRollback


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:

iOS Development
CI/CD
Xcode Cloud

Written by :
Alfin Syahruddin
Developer · Stock Trader · Libertarian · Freethinker

Always open to new ideas. 🕊️

Loading...

Related articles

Articles that you might want to read.

hero image
CI/CD aplikasi iOS dengan AppCenter

Otomatisasi build dan deployment aplikasi iOS ke Testflight.

31 December 2023 · 7 Minutes
iOS Development
CI/CD
AppCenter
hero image
CI/CD aplikasi iOS dengan Fastlane dan Github Actions

Otomatisasi build, testing, screenshot, dan deployment aplikasi iOS ke Testflight & AppStore.

24 September 2023 · 9 Minutes
iOS Development
CI/CD
Fastlane
Github Actions
hero image
Testable Code

Menulis kode yang mudah untuk di-test pada Swift.

1 May 2023 · 8 Minutes
iOS Development
Swift
Testing
All rights reserved © Alfin Syahruddin · 2019
RSS Feed