🌀
Pemilihan CI / CD

CI (Continuous Integration)

Github Action

Github Action adalah alat otomatisasi yang secara default sudah built-in pada Github (baik gratis maupun berbayar). Github Action dapat melakukan berbagai macam hal, tidak hanya terbatas melakukan CI/CD. Mulai dari melakukan pengetesan, build, deployment, notification integration, hingga cron jobs dapat dilakukan menggunakan Github Action. Secara default, environment yang digunakan adalah Linux (Ubuntu). Terdapat banyak sekali Github Action yang sudah dibuat oleh komunitas, sehingga dapat langsung plug-n-play dan bahkan bisa juga melakukan fork dari Github Action yang sudah ada lalu melakukan kustomisasi sendiri.

Pros

  • Banyak Action yang telah dibuat oleh komunitas
  • Build minutes sangat banyak untuk private repo yang gratisan
  • Highly customizable
  • Built-in pada Github

Cons

  • Apabila tidak ingin membayar, hanya dapat melakukan build pada Linux (tidak support iOS App Development).
  • Tidak memiliki akses ke dalam build machine.
  • Integrasi deployment masih rendah sehingga memerlukan bantuan alat lain (misal: Fastlane).
  • Setiap repository harus melakukan pengaturan masing-masing (terpisah).
  • Penyetelan emulator agak ribet (dapat dilihat workflownya disini)
  • Pemakaian Flutter Drive (untuk integration testing ataupun screenshot) masih memiliki beberapa issue.
Notion image

Codemagic

Codemagic adalah platform yang sudah memiliki reputasi yang cukup lama di bidang Mobile Development CI/CD. Codemagic mendukung Flutter, dan secara default menggunakan macOS VM (bisa Android bisa juga iOS) yang sudah didukung oleh beragam macam tools tambahan (seperti gcloud, Firebase CLI, Fastlane, dsb). Pada Codemagic, developer juga dapat masuk langsung pada build machine yang digunakan (menggunakan SSH atau VNC) apabila membutuhkan debugging yang lebih dalam, tidak seperti Github Action yang hanya dapat melihat hasil output dari workflow yang digunakan.

Pros

  • Memiliki akses ke build machine.
  • Sangat mendukung pengembangan Flutter, sudah memiliki banyak integrasi dengan berbagai macam App Store untuk CD.
  • Learning curve lebih rendah dibanding Github Action.
  • Dapat mengatur berbagai macam repository sekaligus.
  • Support iOS App Development.
  • Dapat langsung menjalankan Integration Test ataupun mengambil screenshot (manual atau dengan menggunakan Fastlane [otomatis pada berbagai macam orientasi dan lokalisasi]).

Cons

  • Jumlah build minutes yang jauh lebih rendah dibanding Github Action.
  • Hanya bisa 1 user.
Notion image

Advanced Integration Testing

Meskipun pada Codemagic dan Github Actions telah tersedia cara agar dapat menjalankan Integration Testing, penyetelan akan lebih sulit dilakukan apabila ingin menggunakan berbagai macam jenis HP, atau jika membutuhkan physical device untuk menjalankannya. Maka dari itu terdapat alat-alat dibawah ini yang dapat menjalankannya.

Firebase Test Lab

Firebase Test Lab adalah platform integration testing yang direkomendasikan oleh Flutter. Platform ini support aplikasi Android dan iOS. Aplikasi haruslah standalone (dapat mengetes diri sendiri tanpa memakai driver eksternal) maka dari itu terdapat beberapa step tambahan apabila ingin melakukan integration test Flutter pada Firebase Test Lab, yang telah dijelaskan secara rinci pada referensi dokumentasi integration testing Flutter di atas (atau bisa klik link langsung untuk Android Setup). Terdapat juga Tutorial yang sangat bagus dari Reso Coder yang bisa dilihat pada Referensi Tutorial Setup CI/CD di atas. Selain logs, terdapat juga artifact berupa video ketika testing.

Notion image

AWS Device Farm

Hanya gratis 1000 menit build-time pertama (one-time). Not recommended.

CD (Continuous Deployment)

Fastlane

Fastlane adalah tools yang dapat digunakan untuk mengotomatisasi tahap-tahap dalam deployment seperti build, pembuatan screenshot, app signing, hingga deployment pada Apple App Store atau Google Play Store. Perlu diperhatikan bahwa Fastlane sendiri bukan platform CI/CD, melainkan hanya alat saja sehingga apabila ingin diotomatisasi (misal: setiap push ke master) dapat menggunakan platform CI/CD seperti Github Action atau Codemagic.

source: https://fastlane.tools/

RubyInstaller (Windows): https://rubyinstaller.org/downloads/

Codemagic

Mulai dari signing hingga publishing telah di-cover oleh Codemagic. Perlu diperhatikan bahwa Codemagic tidak dapat melakukan screenshot aplikasi. Untuk itu, dapat digunakan Fastlane yang dapat diintegrasikan langsung pada Codemagic. Selengkapnya bisa cek dokumentasi Codemagic:

Beta Tester Platform

Selain menggunakan Google Play Internal Tester, dapat juga menggunakan platform-platform berikut:

Firebase App Distribution

(belum diriset)

source: https://firebase.google.com/docs/app-distribution

HockeyApp (sekarang menjadi VS App Center)

(belum diriset)

source: https://appcenter.ms/

TestFairy

(belum diriset)

source: https://www.testfairy.com/

DeployGate

(belum diriset)

source: https://deploygate.com/