Continues Deployment IOS Flutter - Cara Gampang Secara Lokal Tanpa Buka Xcode

Halo semuanya kali ini saya akan berbagi bagaimana cara saya mendeploy sebuah aplikasi Flutter platform iOS tanpa membuka xcode dan bisa langsung ke diunggah ke TestFlight.

Kebutuhan

  • MacOS
  • Xcode ^12.5

Latar Belakang

Jadi ceritanya saya mempunyai aplikasi manajemen mutu sekolah, tetapi ternyata banyak sekolah yang terdaftar dan saya tidak punya waktu untuk deploy satu-satu secara manual. Dimana manual disini kita harus tunggu menunggu ketika melalui proses build aplikasi di iOS. Dimana sebelum tahap CD saya melakukan ini semua :
  • Melakukan build flutter ios untuk mengcompile data flutter ke ios
  • Kemudian masuk xcode untuk mengarsipkan file
  • Lalu klik..klik...klik untuk distribute ke AppStore
Nah proses 3 ini 1 aplikasi dari build sampai bisa ke unggah sekitar -+15 menit belum kalau kondisi laptop mac nya banyak buka aplikasi yang bisa lebih dari segitu. Sedangkan aplikasi yang harus diunggah untuk saat ini ada 7 aplikasi ios kan lumayan menyita waktu. Belum sambil menunggu dan tertinggal beberapa menit karena sambil makan atau nonton karena kita ga tau kapan selesai. Dimana kita cuman tau ketika kipas sudah berhenti berarti proses build dan unggah udah selesai. Jadi selama ini saya setidaknya butuh setengah hari untuk bisa mengunggah semua aplikasi versi iOS. Mantep betul bukan.

Dan setelah versi 2 ke atas muncul sebuah perintah baru pada flutter, yaitu : flutter build ipa dimana proses ini merupakan pembentukan arsip aplikasi yang biasa saya lewati pada tahap membuka aplikasi xcode.

Tapi pada proses ini belum selesai ternyata karena kita perlu Sign aplikasi kita ketika kita mau unggah ke appstore. Disini mulai mencari di google tapi engga ketemu-ketemu tuh dan mulai bertanya di grup facebook tapi jawaban membernya kurang memuaskan. Dan googling lagi sampe 2 atau 3 hari baru ketemu yaitu menggunakan xcrun altool yang saya kira bisa langsung di unggah dan sign si aplikasi tapi ternyata salah juga. Dan terakhir ketemu yang katanya harus menggunakan xcodebuild dimana kita dapat sign aplikasi kita baru menggunakan xcrun altool sebagai media untuk unggah aplikasi ke appstore.

Problem Solving

Untuk pemecahan masalah hanya sedikit dari latar belakang yang ruwet. Kita hanya perlu beberapa langkah saja seperti contoh dibawah.

Buat file ios/exportAppStore.plist untuk nanti kita gunakan sebagai proses sign provisioning.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
</dict>
</plist>
Kita bisa buat hanya seperti itu saja untuk exportAppStore.plist karena untuk xcode sekarang bisa diotomatiskan untuk mengetahui bundle mana yang akan dipakai ketika sign provisioning.

Kemudian kita bisa buat proses dibawah ini kedalam CI/CD atau secara lokal dengan membuat sebuah command file. Kita namakan saja file nya one-tap-deploy.command
#!/bin/bash

echo -n "Flavor: "
echo $1
echo "Running Build IOS Flutter"
flutter build ios --flavor $1
echo "Building IOS Archive"
flutter build ipa --flavor $1
echo "Creating IPA File"
xcodebuild -exportArchive -exportOptionsPlist ios/exportAppStore.plist -archivePath build/ios/archive/Runner.xcarchive -exportPath "ios/distribution/$1" -allowProvisioningUpdates
echo "Uploading to AppStore"
pathFile="ios/distribution/"
pathFile+=$1/
pathFile+=\*.ipa
xcrun altool --upload-app -f $pathFile -u USERNAME_APP_STORE -p PASSWORD_ONE_KEY_GENERATE --verbose
echo "Done Uploading"

Karena saya menggunakan flavor jadi jadi saya tambahkan argument tambahan ketika command nya digunakan. Baik akan saya jelaskan satu-satu perintah diatas :

$1 = Variable argument dari terminal

Kemudian melakukan perintah build ios flutter perlu untuk mengcompile dulu flutter nya seperti data konstanta dan lain-lain agar bisa digunakan pada flavor/scheme yang kita akan arsip tapi kalau tidak menggunakan flavor mungkin bisa langsung dilewat langkah tersebut. (Ini pernah saya lewati dan langsung skip ke arsip tapi data konfig konstanta masih pakai yang flutter build ios sebelumnya jadi perlu banget kalau kalian pake flavor)

Setelah proses kompilasi flutter selesai baru kita gunakan perintah build ipa untuk membuat sebuah arsip seperti halnya saat membuka xcode tapi disini kita tidak perlu buka xcode nya.

Setelah proses build arsip dilakukan kita perlu sign aplikasi dengan provisioning kita dan mengexport hasil nya menjadi file IPA yang nantinya kita perlu unggah ke appstore.

Pada pathFile ini kenapa dipisah karena tiap aplikasi setiap scheme punya saya berbeda-beda jadi harus mencari terlebih dahulu file berekstensi ipa agar bisa di dapatkan filePath nya.

Setelah itu kita gunakan xcrun altool --upload-app untuk menggungah aplikasi kita ke appstore, gunakan verbose untuk mengetahui proses unggah nya ya.

Posting Komentar

0 Komentar