Mendistribusikan aplikasi iOS kepada penguji menggunakan fastlane

Anda dapat mendistribusikan build ke penguji menggunakan fastlane, sebuah platform open source yang mengotomatiskan proses build dan rilis aplikasi iOS serta Android. Ini dilakukan dengan mengikuti petunjuk sederhana yang ditentukan dalam Fastfile. Setelah menyiapkan fastlane dan Fastfile, Anda dapat mengintegrasikan App Distribution dengan konfigurasi fastlane.

Langkah 1. Menyiapkan fastlane

  1. Menginstal dan menyiapkan fastlane.

  2. Untuk menambahkan App Distribution ke konfigurasi fastlane, jalankan perintah berikut dari root project iOS Anda:

    fastlane add_plugin firebase_app_distribution

    Jika perintah tersebut menawarkan sejumlah opsi, pilih Option 3: RubyGems.org.

Langkah 2. Melakukan Autentikasi dengan Firebase

Agar dapat menggunakan plugin fastlane, Anda harus terlebih dahulu melakukan autentikasi dengan project Firebase dengan salah satu cara berikut. Secara default, plugin fastlane mencari kredensial dari Firebase CLI jika tidak ada metode autentikasi lain yang digunakan.

Langkah 3. Menyiapkan Fastfile dan mendistribusikan aplikasi Anda

  1. Di jalur ./fastlane/Fastfile, tambahkan blok firebase_app_distribution. Gunakan parameter berikut untuk mengonfigurasi distribusi:
    parameter firebase_app_distribution
    app

    Diperlukan hanya jika aplikasi Anda tidak berisi file konfigurasi Firebase (GoogleService-Info.plist): ID Aplikasi Firebase untuk aplikasi Anda. Anda dapat menemukan ID Aplikasi di Firebase console, di halaman Setelan Umum.

    app: "1:1234567890:ios:0a1b2c3d4e5f67890"
    googleservice_info_plist_path

    Jalur ke file GoogleService-Info.plist Anda, relatif terhadap jalur produk yang diarsipkan. Setel ke GoogleService-Info.plist secara default.

    File ini digunakan untuk mendapatkan ID Aplikasi Firebase jika parameter app tidak ditentukan.

    firebase_cli_token

    Token refresh yang dicetak saat Anda mengautentikasi lingkungan CI dengan Firebase CLI (baca Menggunakan CLI dengan sistem CI untuk informasi selengkapnya).

    service_credentials_file

    Jalur ke file json akun layanan Google Anda. Lihat cara di atas untuk mengautentikasi menggunakan kredensial akun layanan.

    ipa_path

    Menggantikan apk_path (tidak digunakan lagi). Jalur absolut ke file IPA yang akan Anda upload. Jika tidak ditentukan, fastlane akan menentukan lokasi file dari jalur tempat file dibuat.

    release_notes
    release_notes_file

    Catatan rilis untuk build ini.

    Anda dapat menentukan catatan rilis secara langsung:

    release_notes: "Text of release notes"

    Atau, tentukan lokasi ke file teks biasa:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Alamat email penguji yang ingin Anda undang.

    Anda dapat menentukan penguji sebagai daftar alamat email yang dipisahkan dengan koma:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    Atau, Anda dapat menentukan lokasi ke file teks biasa yang berisi daftar alamat email yang dipisahkan koma:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    Grup penguji yang akan Anda undang (lihat Mengelola penguji). Grup ditentukan menggunakan alias grup, yang dapat Anda cari di Firebase console.

    Anda dapat menentukan grup sebagai daftar yang dipisahkan dengan koma:

    groups: "qa-team, trusted-testers"

    Atau, Anda dapat menentukan lokasi ke file teks biasa yang berisi daftar nama grup yang dipisahkan dengan koma:

    groups_file: "/path/to/groups.txt"
    debug

    Tanda boolean. Anda dapat menyetelnya ke true untuk mencetak output debug verbose.

Contoh:

platform :ios do
    desc "My awesome app"
    lane :distribute do
        build_ios_app(...)
        # build_ios_app is a built-in fastlane action.

        release = firebase_app_distribution(
            app: "1:123456789:ios:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!"
        )

    end
end

Agar build tersedia bagi penguji, jalankan jalur Anda:

fastlane <lane>

Nilai yang ditampilkan dari tindakan adalah hash yang mewakili rilis yang diupload. Hash ini juga tersedia menggunakan lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Untuk informasi selengkapnya tentang kolom yang tersedia dalam hash ini, lihat dokumentasi REST API.

Plugin fastlane menampilkan link berikut setelah upload rilis. Link ini membantu Anda mengelola biner dan memastikan bahwa penguji serta developer lain memiliki rilis yang tepat:

  • Link ke Firebase console yang menampilkan satu rilis. Anda dapat membagikan link ini kepada developer lain di organisasi Anda.
  • Link ke rilis dalam pengalaman penguji (klip web iOS) yang memungkinkan penguji melihat catatan rilis dan menginstal aplikasi ke perangkat mereka. Penguji memerlukan akses ke rilis untuk menggunakan link.
  • Link bertanda tangan yang langsung mendownload dan menginstal biner aplikasi (file IPA). Masa berlaku link akan berakhir setelah satu jam.

Setelah didistribusikan, build Anda akan tersedia di dasbor App Distribution di Firebase console selama 150 hari. Saat masa berlaku build akan berakhir dalam 30 hari, pemberitahuan masa berlakunya akan muncul di konsol dan dalam daftar build penguji di perangkat pengujian mereka.

Penguji yang sebelumnya tidak diundang untuk menguji aplikasi akan menerima undangan email untuk memulai. Penguji yang sudah ada akan menerima notifikasi email yang memberitahukan bahwa ada versi build baru yang siap diuji. Untuk mempelajari cara menginstal aplikasi pengujian, lihat Melakukan penyiapan sebagai penguji. Anda dapat memantau status setiap penguji, untuk mengetahui apakah mereka sudah menerima undangan dan mendownload aplikasi, di Firebase console.

(Opsional) Untuk menambahkan nomor build secara otomatis setiap kali Anda membuat rilis baru di App Distribution, Anda dapat menggunakan tindakan firebase_app_distribution_get_latest_release dan tindakan increment_build_number. Kode berikut memberikan contoh cara menambahkan nomor build secara otomatis:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_build_number({ build_number: latest_release[:buildVersion].to_i + 1 })
end

Untuk mempelajari fitur plugin fastlane ini lebih lanjut, lihat Mendapatkan informasi tentang rilis terbaru aplikasi Anda.

Langkah 4 (Opsional). Kelola penguji untuk distribusi

Anda dapat menambahkan dan menghapus penguji dari project atau grup menggunakan file Fastfile atau dengan langsung menjalankan tindakan fastlane. Menjalankan tindakan akan langsung mengganti nilai yang ditetapkan di Fastfile Anda.

Setelah penguji ditambahkan ke project Firebase, Anda dapat menambahkannya ke rilis individual. Penguji yang dihapus dari project Firebase Anda tidak lagi memiliki akses ke rilis di project Anda, tetapi tetap mendapatkan akses ke rilis Anda selama jangka waktu tertentu.

Jika Anda memiliki banyak penguji, sebaiknya pertimbangkan untuk menggunakan grup.

Gunakan Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

Menjalankan tindakan fastlane

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

Anda juga dapat memilih penguji menggunakan --file="/path/to/testers.txt, bukan --emails.

Tugas firebase_app_distribution_add_testers dan firebase_app_distribution_remove_testers juga menerima argumen berikut:

  • project_name: Nomor project Firebase Anda.
  • group_alias (opsional): Jika ditentukan, penguji akan ditambahkan ke (atau dihapus dari) grup yang ditentukan.
  • service_credentials_file: Jalur ke file kredensial layanan Google Anda.
  • firebase_cli_token: Token autentikasi untuk Firebase CLI.

service_credentials_file dan firebase_cli_token adalah argumen yang sama yang digunakan oleh tindakan upload.

Langkah 5 (Opsional). Mendapatkan informasi tentang rilis terbaru aplikasi Anda

Anda dapat menggunakan tindakan firebase_app_distribution_get_latest_release untuk mengambil informasi tentang rilis terbaru aplikasi Anda di App Distribution, termasuk informasi versi aplikasi, catatan rilis, dan waktu pembuatan. Kasus penggunaan mencakup peningkatan versi secara otomatis dan memindahkan catatan rilis dari rilis sebelumnya.

Nilai yang ditampilkan dari tindakan adalah hash yang mewakili rilis terbaru. Hash ini juga tersedia menggunakan lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Untuk informasi selengkapnya tentang kolom yang tersedia dalam hash ini, lihat dokumentasi REST API.

Parameter

parameter firebase_app_distribution_get_latest_release
app

Diperlukan hanya jika aplikasi Anda tidak berisi file konfigurasi Firebase (GoogleService-Info.plist): ID Aplikasi Firebase untuk aplikasi Anda. Anda dapat menemukan ID Aplikasi di Firebase console, di halaman Setelan Umum.

app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path

Jalur ke file GoogleService-Info.plist Anda, relatif terhadap jalur produk yang diarsipkan. Setel ke GoogleService-Info.plist secara default.

File ini digunakan untuk mendapatkan ID Aplikasi Firebase jika parameter app tidak ditentukan.

firebase_cli_token

Token refresh yang dicetak saat Anda mengautentikasi lingkungan CI dengan Firebase CLI (baca Menggunakan CLI dengan sistem CI untuk informasi selengkapnya).

service_credentials_file

Jalur ke file json akun layanan Google Anda. Lihat cara di atas untuk mengautentikasi menggunakan kredensial akun layanan.

debug

Tanda boolean. Anda dapat menyetelnya ke true untuk mencetak output debug verbose.

Langkah berikutnya