CI/CD iOS Modern dengan Flutter & Xcode Cloud

CI/CD iOS Modern dengan Flutter & Xcode Cloud

Daftar Isi

Ada sebuah Mac Mini di bawah meja. Semua rilis melewatinya.

Kalimat itu sudah merangkum seluruh persoalannya, dan jika Anda pernah menangani pengiriman aplikasi iOS, Anda sudah bisa merasakan bentuk kekacauannya: mesin itu butuh pembaruan OS yang merusak Xcode, pembaruan Xcode yang merusak toolchain Flutter, serta sertifikat yang kedaluwarsa mengikuti jadwalnya sendiri tanpa peduli apa yang sedang dikerjakan siapa pun pekan itu.

Deployment web tidak bekerja seperti ini. iOS menuntut code signing, provisioning profile, dan mesin Apple fisik untuk membangunnya. Maka saya memindahkan semuanya ke Xcode Cloud lalu mematikan Mac Mini itu.

Tantangan

Tim kami menghadapi tiga hambatan utama:

  1. Rumitnya Code Signing: Rotasi sertifikat secara manual kerap membuat pipeline gagal.
  2. Ketergantungan Hardware: Build dijalankan pada Mac Mini lokal yang menuntut pembaruan OS terus-menerus.
  3. Integrasi Flutter: Xcode Cloud dirancang untuk Swift/Objective-C, sehingga menjalankan build Flutter memerlukan penyesuaian khusus.

Solusi: Pipeline Cloud-Native

1. Custom Build Script (ci_post_clone.sh)

Karena instance Xcode Cloud bersifat ephemeral, saya menulis Bash script yang langsung dijalankan setelah repository selesai di-clone:

  • Mengunduh Flutter SDK versi stable.
  • Menjalankan flutter pub get untuk memasang dependensi.
  • Mengeksekusi flutter build ios --no-codesign guna menghasilkan framework sebelum proses archive.

2. Signing & Infrastruktur Otomatis

Dengan beralih ke Xcode Cloud, kami melepaskan bagian tersulit dari iOS DevOps. Layanan ini mengelola Distribution Certificate secara otomatis sehingga build tidak lagi gagal akibat key yang kedaluwarsa.

Hasil

  • Tanpa Pemeliharaan Infrastruktur: Mac Mini on-premise berhasil dinonaktifkan sepenuhnya.
  • Tingkat Keberhasilan Build 100%: Signing otomatis menghilangkan kegagalan yang berkaitan dengan sertifikat.
  • Distribusi Mulus: Kode yang di-merge ke develop otomatis tersedia di perangkat tester melalui TestFlight.
call to action

Siap membangun proyek bersama saya?

Saya siap membantu membangun, mengembangkan, dan meluncurkan proyek Anda berikutnya — kirim pesan sekarang dan ayo kita mulai!

Mulai Sekarang