iOS アプリと Android アプリのビルドとリリースを自動化するオープンソース プラットフォームである fastlane を使用して、ビルドをテスターに配布できます。この配布は、Fastfile
で定義されたシンプルな手順に従います。fastlane と Fastfile
を設定したら、App Distribution と fastlane の構成を統合できます。
ステップ 1. fastlane を設定する
fastlane の構成に App Distribution を追加するには、iOS プロジェクトのルートから次のコマンドを実行します。
fastlane add_plugin firebase_app_distribution
コマンドでオプションの選択を求めるプロンプトが表示されたら、
Option 3: RubyGems.org
を選択します。
ステップ 2. Firebase で認証する
fastlane プラグインを使用する前に、まず、次のいずれかの方法で Firebase プロジェクトで認証する必要があります。注: 他の認証方法が使用されていない場合、デフォルトでは、fastlane プラグインは Firebase CLI の認証情報を探します。
ステップ 3. Fastfile を設定してアプリを配布する
./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"
test_devices
test_devices_file
次の配布タイプは、自動テスターのベータ版機能の一部です。
ビルドを配布するテストデバイス(自動テストをご覧ください)。
テストデバイスは、テストデバイスのセミコロン区切りのリストとして指定できます。
test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
または、テストデバイスのセミコロン区切りのリストを含む書式なしテキスト ファイルのパスを指定します。
test_devices_file: "/path/to/test-devices.txt"
test_username
自動テスト中に使用する自動ログインのユーザー名。
test_password
test_password_file
自動テスト中に使用する自動ログイン用のパスワード。
または、パスワードを含む書式なしテキスト ファイルのパスを指定します。
test_password_file: "/path/to/test-password.txt"
test_username_resource
自動テスト中に自動ログインに使用するユーザー名フィールドのリソース名。
test_password_resource
自動テスト中に自動ログインに使用するパスワード フィールドのリソース名。
test_non_blocking
自動テストを非同期で実行します。自動テストの結果は Firebase コンソールで確認できます。
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_file
と firebase_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 構成ファイル( app: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
|
firebase_cli_token
|
Firebase CLI を使用して CI 環境を認証するときに出力される更新トークン(詳細については CI システムで CLI を使用するをご覧ください)。 |
service_credentials_file
|
Google サービス アカウントの JSON ファイルのパス。サービス アカウント認証情報を使用して認証する方法については、前述のドキュメントをご覧ください。 |
service_credentials_json_data
|
Google サービス アカウントの JSON ファイルの内容。サービス アカウント認証情報を使用して認証する方法については、前述のドキュメントをご覧ください。 |
debug
|
ブール値のフラグ。 |
次のステップ
手動またはプログラムによってさらにデバイスを登録する。追加の iOS デバイスを登録するをご覧ください。
CI / CD と fastlane を使用して QA テスターに Apple アプリを配布するためのベスト プラクティスを確認する