Thursday

19-06-2025 Vol 19

🚀 Automate iOS Builds and Uploads to TestFlight Using Fastlane

🚀 Otomatisasi Build iOS dan Unggah ke TestFlight Menggunakan Fastlane

Proses build, pengujian, dan pendistribusian aplikasi iOS bisa menjadi tugas yang memakan waktu dan rentan kesalahan jika dilakukan secara manual. Fastlane hadir untuk mengatasi masalah ini dengan menyediakan serangkaian alat yang kuat untuk mengotomatiskan alur kerja pengembangan mobile Anda. Artikel ini akan memandu Anda melalui proses otomatisasi build iOS dan mengunggahnya ke TestFlight menggunakan Fastlane, sehingga menghemat waktu dan meningkatkan efisiensi.

Daftar Isi

  1. Pendahuluan
    1. Mengapa Otomatisasi Penting?
    2. Apa itu Fastlane?
    3. Keuntungan Menggunakan Fastlane
  2. Persiapan
    1. Instalasi Fastlane
    2. Inisialisasi Fastlane di Proyek iOS Anda
    3. Konfigurasi Proyek Xcode
  3. Konfigurasi Fastfile
    1. Pengenalan Fastfile
    2. Membuat dan Mengedit Fastfile
    3. Menentukan Lane untuk Build dan Unggah
  4. Mengotomatiskan Build dan Pengujian
    1. Menggunakan gym untuk Membangun Aplikasi
    2. Menjalankan Pengujian Unit dan UI
    3. Mengelola Profil Provisioning dan Sertifikat
  5. Mengunggah ke TestFlight
    1. Menggunakan pilot untuk Unggah ke TestFlight
    2. Mengelola Penguji (Testers) dan Grup
    3. Konfigurasi Metadata Aplikasi
  6. Konfigurasi Lanjutan
    1. Variabel Lingkungan
    2. Integrasi dengan Sistem CI/CD (Continuous Integration/Continuous Delivery)
    3. Notifikasi Slack dan Email
  7. Troubleshooting
    1. Masalah Umum dan Solusinya
    2. Log dan Debugging Fastlane
  8. Praktik Terbaik
    1. Menjaga Fastfile Tetap Bersih dan Terstruktur
    2. Menggunakan Variabel untuk Konfigurasi
    3. Validasi Otomatis
  9. Kesimpulan

1. Pendahuluan

1.1 Mengapa Otomatisasi Penting?

Otomatisasi dalam pengembangan iOS adalah kunci untuk mengurangi kesalahan manusia, mempercepat siklus rilis, dan membebaskan pengembang untuk fokus pada tugas-tugas yang lebih penting seperti pengembangan fitur dan perbaikan bug. Tanpa otomatisasi, proses build dan distribusi bisa menjadi sangat rumit dan memakan waktu, terutama untuk proyek-proyek besar.

Manfaat Otomatisasi:

  • Mengurangi Kesalahan: Mengurangi risiko kesalahan manusia yang sering terjadi saat melakukan tugas-tugas manual.
  • Mempercepat Siklus Rilis: Mempercepat proses build, pengujian, dan distribusi aplikasi.
  • Meningkatkan Produktivitas: Membebaskan pengembang untuk fokus pada tugas-tugas yang lebih penting.
  • Konsistensi: Memastikan proses build yang konsisten setiap waktu.
  • Skalabilitas: Memudahkan pengelolaan dan skala proses build dan distribusi seiring pertumbuhan proyek.

1.2 Apa itu Fastlane?

Fastlane adalah serangkaian alat open-source yang bertujuan untuk mengotomatiskan tugas-tugas yang membosankan untuk pengembang iOS dan Android. Dengan Fastlane, Anda dapat mengotomatiskan berbagai tugas seperti:

  • Membangun dan menandatangani aplikasi
  • Menjalankan pengujian
  • Mengunggah aplikasi ke TestFlight atau App Store
  • Mengelola sertifikat dan profil provisioning
  • Membuat screenshot aplikasi
  • Mengotomatiskan proses pengiriman metadata aplikasi

Fastlane menyediakan CLI (Command Line Interface) yang mudah digunakan dan dapat dikonfigurasi melalui file konfigurasi (Fastfile). Alat ini mendukung berbagai platform CI/CD seperti Jenkins, Travis CI, dan CircleCI.

1.3 Keuntungan Menggunakan Fastlane

Menggunakan Fastlane menawarkan berbagai keuntungan bagi tim pengembangan iOS:

  • Otomatisasi: Mengotomatiskan tugas-tugas yang berulang dan memakan waktu.
  • Efisiensi: Meningkatkan efisiensi dan produktivitas tim.
  • Konsistensi: Memastikan proses build dan distribusi yang konsisten.
  • Skalabilitas: Memudahkan pengelolaan dan skala proses build dan distribusi.
  • Reduksi Kesalahan: Mengurangi risiko kesalahan manusia.
  • Integrasi: Mudah diintegrasikan dengan platform CI/CD.
  • Komunitas: Didukung oleh komunitas yang besar dan aktif.

2. Persiapan

2.1 Instalasi Fastlane

Ada beberapa cara untuk menginstal Fastlane:

  1. Menggunakan RubyGems: (Direkomendasikan jika Anda sudah memiliki Ruby Environment)
    gem install fastlane -NV
  2. Menggunakan Bundler: (Direkomendasikan untuk konsistensi versi)
    1. Buat Gemfile di direktori proyek Anda:
      bundle init
    2. Tambahkan Fastlane ke Gemfile:
      echo "gem 'fastlane'" >> Gemfile
    3. Instal dependensi:
      bundle install
    4. Jalankan Fastlane melalui Bundler:
      bundle exec fastlane 

Setelah instalasi selesai, verifikasi dengan menjalankan perintah:

fastlane --version

Ini akan menampilkan versi Fastlane yang terinstal.

2.2 Inisialisasi Fastlane di Proyek iOS Anda

Masuk ke direktori proyek iOS Anda melalui terminal dan jalankan:

fastlane init

Fastlane akan menanyakan beberapa pertanyaan untuk mengkonfigurasi proyek Anda. Pilih opsi yang sesuai dengan kebutuhan Anda:

  • Automate App Store Connect access: Pilih “Y” untuk mengotomatiskan akses ke App Store Connect.
  • Setup code signing: Pilih “Y” jika Anda ingin Fastlane mengelola sertifikat dan profil provisioning Anda.
  • Automate beta distribution to TestFlight: Pilih “Y” jika Anda ingin mengotomatiskan distribusi beta ke TestFlight.
  • Automate App Store release: Pilih “Y” jika Anda ingin mengotomatiskan rilis ke App Store.

Fastlane akan membuat file Fastfile dan Appfile di direktori fastlane di proyek Anda.

2.3 Konfigurasi Proyek Xcode

Pastikan proyek Xcode Anda dikonfigurasi dengan benar untuk build otomatis. Beberapa hal yang perlu diperiksa:

  • Bundle Identifier: Pastikan Bundle Identifier Anda sudah benar dan terdaftar di App Store Connect.
  • Signing Certificate dan Provisioning Profile: Pastikan Anda memiliki sertifikat dan profil provisioning yang valid. Fastlane dapat membantu mengelola ini melalui match atau cert dan sigh.
  • Version Number dan Build Number: Pastikan Anda memiliki skema penomoran versi dan build yang jelas.

3. Konfigurasi Fastfile

3.1 Pengenalan Fastfile

Fastfile adalah file konfigurasi utama untuk Fastlane. File ini berisi definisi dari “lanes” yang merupakan serangkaian tindakan yang akan dijalankan oleh Fastlane. File ini disimpan dalam direktori fastlane di root proyek Anda.

Contoh Fastfile:

# fastlane/Fastfile
default_platform(:ios)

platform :ios do
  desc "Build and upload to TestFlight"
  lane :beta do
    match(type: "appstore") # Mengelola sertifikat dan profil provisioning
    gym(scheme: "YourAppScheme", clean: true) # Membangun aplikasi
    pilot # Mengunggah ke TestFlight
  end
end

3.2 Membuat dan Mengedit Fastfile

Anda dapat mengedit Fastfile menggunakan editor teks apa pun. Pastikan sintaks Ruby Anda benar. Anda dapat menambahkan atau mengubah lanes sesuai dengan kebutuhan Anda.

Contoh Fastfile yang Lebih Kompleks:

# fastlane/Fastfile
default_platform(:ios)

platform :ios do
  desc "Increment build number"
  lane :increment_build_number do
    increment_build_number(xcodeproj: "YourProject.xcodeproj")
  end

  desc "Build and upload to TestFlight"
  lane :beta do
    increment_build_number
    match(type: "appstore")
    gym(scheme: "YourAppScheme", clean: true, export_method: "app-store")
    pilot(distribute_external: true) # Mendistribusikan ke penguji eksternal
  end

  desc "Build for development"
  lane :development do
     match(type: "development")
     gym(scheme: "YourAppScheme", configuration: "Debug", export_method: "development")
  end
end

3.3 Menentukan Lane untuk Build dan Unggah

Di dalam Fastfile, Anda perlu mendefinisikan sebuah “lane” yang akan digunakan untuk membangun dan mengunggah aplikasi ke TestFlight. Setiap lane berisi serangkaian “actions” yang akan dijalankan secara berurutan.

Contoh Lane untuk Build dan Unggah:

# fastlane/Fastfile
platform :ios do
  desc "Build, test, and upload to TestFlight"
  lane :testflight do
    match(type: "appstore") # Mengelola sertifikat dan profil provisioning
    gym(scheme: "YourAppScheme", clean: true) # Membangun aplikasi
    pilot # Mengunggah ke TestFlight
  end
end

Untuk menjalankan lane ini, gunakan perintah:

fastlane testflight

4. Mengotomatiskan Build dan Pengujian

4.1 Menggunakan gym untuk Membangun Aplikasi

gym adalah action Fastlane yang digunakan untuk membangun aplikasi iOS Anda. Ia mengelola proses kompilasi, penandatanganan kode, dan pembuatan archive (.ipa).

Contoh Penggunaan gym:

gym(
  scheme: "YourAppScheme",
  clean: true,
  output_name: "YourAppName.ipa",
  export_method: "app-store"
)

Parameter Penting gym:

  • scheme: Nama skema Xcode yang akan digunakan untuk membangun aplikasi.
  • clean: Membersihkan direktori build sebelum membangun aplikasi.
  • output_name: Nama file .ipa yang dihasilkan.
  • export_method: Metode penandatanganan kode (misalnya, app-store, ad-hoc, development).
  • output_directory: Direktori tempat file .ipa akan disimpan.

4.2 Menjalankan Pengujian Unit dan UI

Anda dapat mengintegrasikan pengujian unit dan UI ke dalam alur kerja Fastlane Anda. Gunakan action scan untuk menjalankan pengujian.

Contoh Penggunaan scan:

scan(
  scheme: "YourAppScheme",
  clean: true,
  device: "iPhone 14",
  code_coverage: true
)

Parameter Penting scan:

  • scheme: Nama skema Xcode yang akan digunakan untuk menjalankan pengujian.
  • clean: Membersihkan direktori build sebelum menjalankan pengujian.
  • device: Perangkat yang akan digunakan untuk menjalankan pengujian UI.
  • code_coverage: Menghasilkan laporan code coverage.
  • test_without_building: Melewatkan proses build sebelum menjalankan pengujian.

Anda dapat menggabungkan gym dan scan dalam satu lane:

lane :testflight do
  match(type: "appstore")
  gym(scheme: "YourAppScheme", clean: true)
  scan(scheme: "YourAppScheme")
  pilot
end

4.3 Mengelola Profil Provisioning dan Sertifikat

Pengelolaan sertifikat dan profil provisioning bisa menjadi tantangan. Fastlane menawarkan dua alat yang populer untuk mengatasi masalah ini: match dan cert/sigh.

  • match: Menyimpan sertifikat dan profil provisioning di repositori Git privat dan menyinkronkannya di antara anggota tim.
  • cert dan sigh: Membuat dan memperbarui sertifikat dan profil provisioning secara otomatis.

Contoh Penggunaan match:

match(type: "appstore")

match akan secara otomatis mengambil sertifikat dan profil provisioning yang sesuai dari repositori Git dan menginstalnya di mesin Anda.

5. Mengunggah ke TestFlight

5.1 Menggunakan pilot untuk Unggah ke TestFlight

pilot adalah action Fastlane yang digunakan untuk mengunggah aplikasi ke TestFlight. Ia mengelola proses unggah, pemrosesan, dan distribusi aplikasi kepada penguji.

Contoh Penggunaan pilot:

pilot(distribute_external: true)

Parameter Penting pilot:

  • distribute_external: Mendistribusikan build ke penguji eksternal.
  • skip_waiting_for_build_processing: Melewatkan menunggu proses pemrosesan build selesai.
  • ipa: Jalur ke file .ipa yang akan diunggah.
  • changelog: Catatan perubahan untuk build ini.

Anda dapat menggabungkan gym dan pilot dalam satu lane:

lane :testflight do
  match(type: "appstore")
  gym(scheme: "YourAppScheme", clean: true)
  pilot(distribute_external: true)
end

5.2 Mengelola Penguji (Testers) dan Grup

Anda dapat mengelola penguji dan grup TestFlight menggunakan pilot. Anda dapat menambahkan penguji baru, menghapus penguji, atau menambahkan penguji ke grup.

Contoh Menambahkan Penguji:

pilot(
  add_external_testers: ["tester1@example.com", "tester2@example.com"],
  groups: ["Beta Testers"]
)

Contoh Menghapus Penguji:

pilot(
  remove_external_testers: ["tester1@example.com"]
)

5.3 Konfigurasi Metadata Aplikasi

Anda dapat mengotomatiskan pengiriman metadata aplikasi (seperti nama aplikasi, deskripsi, dan kata kunci) menggunakan Fastlane. Gunakan action deliver untuk mengelola metadata aplikasi.

Contoh Penggunaan deliver:

deliver(
  app_identifier: "com.example.YourApp",
  name: "Your App Name",
  description: "Your App Description",
  keywords: ["keyword1", "keyword2", "keyword3"]
)

Parameter Penting deliver:

  • app_identifier: Bundle Identifier aplikasi Anda.
  • name: Nama aplikasi.
  • description: Deskripsi aplikasi.
  • keywords: Kata kunci aplikasi.
  • screenshots_path: Direktori tempat screenshot aplikasi disimpan.

6. Konfigurasi Lanjutan

6.1 Variabel Lingkungan

Anda dapat menggunakan variabel lingkungan untuk mengkonfigurasi Fastlane secara dinamis. Ini sangat berguna untuk menyimpan informasi sensitif seperti kata sandi atau API key.

Contoh Penggunaan Variabel Lingkungan:

# Fastfile
api_key = ENV["API_KEY"]

lane :deploy do
  # Menggunakan API key
  puts "API Key: #{api_key}"
end

Anda dapat mengatur variabel lingkungan menggunakan:

export API_KEY="your_api_key"

6.2 Integrasi dengan Sistem CI/CD (Continuous Integration/Continuous Delivery)

Fastlane sangat mudah diintegrasikan dengan berbagai sistem CI/CD seperti Jenkins, Travis CI, dan CircleCI. Ini memungkinkan Anda untuk mengotomatiskan seluruh alur kerja pengembangan Anda.

Contoh Integrasi dengan Travis CI:

  1. Buat file .travis.yml di direktori proyek Anda.
  2. Tambahkan konfigurasi berikut:
    
    language: objective-c
    osx_image: xcode14.2
    before_install:
      - gem install bundler
      - bundle install
    script:
      - bundle exec fastlane testflight
    
  3. Commit dan push file .travis.yml ke repositori Git Anda.

Travis CI akan secara otomatis menjalankan Fastlane setiap kali ada commit baru ke repositori Anda.

6.3 Notifikasi Slack dan Email

Anda dapat mengonfigurasi Fastlane untuk mengirim notifikasi ke Slack atau email setelah build dan unggah selesai. Ini memungkinkan Anda untuk terus memantau status alur kerja Anda.

Contoh Penggunaan slack:

slack(
  message: "Build berhasil diunggah ke TestFlight!",
  success: true,
  channel: "#ios-builds"
)

Contoh Penggunaan mail:

mail(
  to: "developers@example.com",
  subject: "Build Berhasil",
  body: "Build berhasil diunggah ke TestFlight."
)

7. Troubleshooting

7.1 Masalah Umum dan Solusinya

Berikut adalah beberapa masalah umum yang mungkin Anda temui saat menggunakan Fastlane dan solusinya:

  • Masalah Penandatanganan Kode: Pastikan sertifikat dan profil provisioning Anda valid dan terinstal dengan benar. Gunakan match atau cert/sigh untuk mengelola sertifikat dan profil provisioning.
  • Masalah Jaringan: Pastikan Anda memiliki koneksi internet yang stabil.
  • Masalah Versi: Pastikan Anda menggunakan versi Fastlane yang kompatibel dengan Xcode dan sistem operasi Anda.
  • Masalah App Store Connect: Pastikan kredensial App Store Connect Anda valid dan Anda memiliki izin yang cukup.

7.2 Log dan Debugging Fastlane

Fastlane menghasilkan log yang detail yang dapat membantu Anda mendiagnosis masalah. Anda dapat melihat log dengan membuka file fastlane/report.xml atau dengan menggunakan opsi --verbose saat menjalankan Fastlane.

Contoh Menjalankan Fastlane dengan Opsi --verbose:

fastlane testflight --verbose

8. Praktik Terbaik

8.1 Menjaga Fastfile Tetap Bersih dan Terstruktur

Fastfile Anda harus tetap bersih dan terstruktur agar mudah dibaca dan dipelihara. Gunakan komentar untuk menjelaskan setiap lane dan tindakan. Bagi Fastfile menjadi beberapa bagian jika perlu.

8.2 Menggunakan Variabel untuk Konfigurasi

Gunakan variabel untuk menyimpan konfigurasi seperti nama aplikasi, bundle identifier, dan skema Xcode. Ini memudahkan untuk mengubah konfigurasi tanpa harus mengubah kode.

8.3 Validasi Otomatis

Tambahkan validasi otomatis ke Fastfile Anda untuk memastikan bahwa semua parameter yang diperlukan sudah diatur dengan benar. Ini dapat membantu Anda mencegah kesalahan sebelum build dimulai.

9. Kesimpulan

Otomatisasi build iOS dan unggah ke TestFlight menggunakan Fastlane adalah cara yang efektif untuk meningkatkan efisiensi dan produktivitas tim pengembangan Anda. Dengan Fastlane, Anda dapat mengotomatiskan tugas-tugas yang membosankan, mengurangi kesalahan, dan mempercepat siklus rilis aplikasi Anda. Dengan panduan ini, Anda sekarang memiliki dasar yang kuat untuk memulai otomasi alur kerja pengembangan iOS Anda dengan Fastlane.

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *