fastlane を使用して iOS アプリをテスターに配布する

iOS アプリと Android アプリのビルドとリリースを自動化するオープンソース プラットフォームである fastlane を使用して、ビルドをテスターに配布できます。この配布は、Fastfile で定義されたシンプルな手順に従います。fastlane と Fastfile を設定したら、App Distribution と fastlane の構成を統合できます。

ステップ 1. fastlane を設定する

  1. fastlane をインストールして設定します

  2. fastlane の構成に App Distribution を追加するには、iOS プロジェクトのルートから次のコマンドを実行します。

    fastlane add_plugin firebase_app_distribution

    コマンドでオプションの選択を求めるプロンプトが表示されたら、Option 3: RubyGems.org を選択します。

ステップ 2. Firebase で認証する

fastlane プラグインを使用する前に、まず、次のいずれかの方法で Firebase プロジェクトで認証する必要があります。デフォルトでは、他の認証方法が使用されていない場合、fastlane プラグインは Firebase CLI から認証情報を探します。

ステップ 3. Fastfile を設定してアプリを配布する

  1. ./fastlane/Fastfile のレーンに firebase_app_distribution ブロックを追加します。次のパラメータを使用して、配布を構成します。
    firebase_app_distribution のパラメータ
    app

    アプリに Firebase 構成ファイル(GoogleService-Info.plist)が含まれていない場合にのみ必要: アプリの Firebase アプリ ID。アプリ ID は Firebase コンソールの全般設定ページで確認できます。

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

    GoogleService-Info.plist ファイルのパス(アーカイブしたプロダクトのパスからの相対パス)。デフォルトでは GoogleService-Info.plist に設定されています。

    app パラメータが指定されていない場合は、このファイルを使用してアプリの Firebase アプリ ID を取得します。

    firebase_cli_token

    Firebase CLI を使用して CI 環境を認証するときに出力される更新トークン(詳細については CI システムで CLI を使用するをご覧ください)。

    service_credentials_file

    Google サービス アカウントの JSON ファイルのパス。上記のサービス アカウント認証情報を使用して認証する方法をご覧ください。

    ipa_path

    apk_path(非推奨)に代わるものです。アップロードする IPA ファイルの絶対パスです。指定されていない場合、fastlane はファイルが生成されたレーンからファイルの場所を特定します。

    release_notes
    release_notes_file

    このビルドのリリースノート。

    リリースノートを直接指定します。

    release_notes: "Text of release notes"

    または、プレーン テキスト ファイルのパスを指定します。

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

    招待するテスターのメールアドレス。

    メールアドレスのカンマ区切りのリストとしてテスターを指定します。

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

    または、メールアドレスのカンマ区切りのリストを含む書式なしテキスト ファイルへのパスを指定します。

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

    招待するテスター グループ(テスターを管理するをご覧ください)。グループはグループ エイリアスで指定します。これは、Firebase コンソールで検索できます。

    グループをカンマ区切りのリストとして指定します。

    groups: "qa-team, trusted-testers"

    または、グループ名のカンマ区切りのリストを含む書式なしテキスト ファイルのパスを指定します。

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

    ブール値のフラグ。true に設定すると詳細なデバッグ情報が出力されます。

例:

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

テスターが利用できるビルドにするために、レーンを実行します。

fastlane <lane>

アクションの戻り値は、アップロードされたリリースを表すハッシュです。このハッシュは lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] を使用して取得することもできます。このハッシュで使用可能なフィールドの詳細については、REST API ドキュメントをご覧ください。

リリースのアップロード後、fastlane プラグインによって次のリンクが出力されます。これらのリンクにより、バイナリを管理し、テスターや他のデベロッパーが正しいリリースを入手できるようになります。

  • 1 つのリリースを表示する Firebase コンソールへのリンク。このリンクは、組織内の他のデベロッパーと共有できます。
  • テスター エクスペリエンス(iOS ウェブクリップ)のリリースへのリンク。これを使用すると、テスターは、リリースノートを確認し、アプリをデバイスにインストールできます。このリンクを使用するには、テスターにリリースへのアクセス権が必要です。
  • アプリのバイナリ(IPA ファイル)を直接ダウンロードしてインストールする署名付きリンク。このリンクは 1 時間後に失効します。

ビルドを配布した後、Firebase コンソールの App Distribution ダッシュボードで 150 日間ビルドを使用できます。ビルドが期限切れになる 30 日前に、テストデバイス上のテスターのビルドリストとコンソールに有効期限のお知らせが表示されます。

アプリのテストに招待されていないテスターには、開始するための招待メールが届きます。既存のテスターには、新しいビルドの準備ができていることを知らせるメールが届きます。テストアプリをインストールする方法については、テスターとして設定するをご覧ください。Firebase コンソールで各テスターのステータス(招待を承諾したか、アプリをダウンロードしたか)を確認できます。

(省略可)App Distribution で新しいリリースを作成するたびにビルド番号を自動的に増やすには、firebase_app_distribution_get_latest_release アクションと increment_build_number アクションを使用します。次のコードは、ビルド番号を自動的に増やす方法を示しています。

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

この fastlane プラグイン機能の詳細については、アプリの最新リリースに関する情報を取得するをご覧ください。

ステップ 4. (省略可)対象のテスターを管理する

プロジェクトまたはグループのテスターは、Fastfile ファイルを使用するか、fastlane アクションを直接実行して追加や削除することが可能です。アクションを直接実行すると、Fastfile に設定された値がオーバーライドされます。

Firebase プロジェクトにテスターを追加すると、個々のリリースにテスターを追加できるようになります。Firebase プロジェクトから削除されたテスターはプロジェクト内のリリースにアクセスできなくなりますが、一定の期間、リリースにアクセスできる可能性があります。

テスターの人数が多い場合は、グループの使用を検討してください。

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

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"

--emails の代わりに --file="/path/to/testers.txt を使用してテスターを指定することもできます。

また、firebase_app_distribution_add_testers タスクと firebase_app_distribution_remove_testers タスクは次の引数を受け入れます。

  • project_name: Firebase プロジェクト番号。
  • group_alias(省略可): 指定すると、テスターは指定したグループに追加(または削除)されます。
  • service_credentials_file: Google サービス認証情報ファイルのパス。
  • firebase_cli_token: Firebase CLI の認証トークン。

service_credentials_filefirebase_cli_token は、アップロード アクションで使用される引数と同じです。

ステップ 5. (省略可)アプリの最新リリースに関する情報を取得する

firebase_app_distribution_get_latest_release アクションを使用すると、App Distribution でアプリの最新リリースに関する情報(アプリのバージョン情報、リリースノート、作成日時など)を取得できます。この情報は、バージョンの自動増分や、以前のリリースのリリースノートの引き継ぎなどに使用できます。

アクションの戻り値は、最新のリリースを表すハッシュになります。このハッシュは lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] を使用して取得することもできます。このハッシュで使用可能なフィールドの詳細については、REST API ドキュメントをご覧ください。

パラメータ

firebase_app_distribution_get_latest_release パラメータ
app

アプリに Firebase 構成ファイル(GoogleService-Info.plist)が含まれていない場合にのみ必要: アプリの Firebase アプリ ID。アプリ ID は Firebase コンソールの全般設定ページで確認できます。

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

GoogleService-Info.plist ファイルのパス(アーカイブしたプロダクトのパスからの相対パス)。デフォルトでは GoogleService-Info.plist に設定されています。

app パラメータが指定されていない場合は、このファイルを使用してアプリの Firebase アプリ ID を取得します。

firebase_cli_token

Firebase CLI を使用して CI 環境を認証するときに出力される更新トークン(詳細については CI システムで CLI を使用するをご覧ください)。

service_credentials_file

Google サービス アカウントの JSON ファイルのパス。上記のサービス アカウント認証情報を使用して認証する方法をご覧ください。

debug

ブール値のフラグ。true に設定すると詳細なデバッグ情報が出力されます。

次のステップ