このドキュメントでは、Firebase App Distribution と fastlane を使用して、Apple プラットフォームのプレリリース テスト ワークフローを CI / CD 環境で持続可能かつ再現可能にするためのベスト プラクティスを紹介します。fastlane を中心に説明しますが、Firebase コンソール、Firebase CLI、一般公開の Firebase App Distribution API で利用可能なソリューションについても説明します。これらのソリューションにより、さらに柔軟性を高めることができます。また、最適なエクスペリエンスを得るための事前計画ができるように、リリースとテスターの上限についても説明します。
Android も使用している場合は、CI / CD を使用して Android アプリを QA テスターに配布するためのベスト プラクティスをご覧ください。
始める前に
このドキュメントのベスト プラクティスを実施する前に、Firebase コンソールでアプリごとに App Distribution を有効にしてください。App Distribution を有効にしていない場合は、404 エラーが発生します。
App Distribution を有効にするには、以下の操作を行ってください。
Firebase コンソールで App Distribution ページを開きます。
iOS アプリを選択します。
[利用開始] をクリックします。
CI / CD でプレリリース版のテスト ワークフローを自動化する
CI / CD でアプリのビルドとリリースの自動化をテスターに行う場合は、fastlane を使用することをおすすめします。また、Firebase CLI を使用して、さまざまな Firebase プロダクトにアクセスすることもできます。
fastlane を使用する
fastlane は、iOS アプリと Android アプリのビルドとリリースを自動化するオープンソースのツールです。これを使用して、App Distribution を CI / CD パイプラインに統合します。最新リリースをビルドしてテスターに自動的に配布することで、テスターには常にアプリの最新のテスト バージョンが用意されます。
App Distribution を fastlane と統合する方法については、fastlane を使用して iOS アプリをテスターに配布するをご覧ください。fastlane 統合プロセスを説明する Codelab もご覧ください。
Firebase CLI を使用する
App Distribution が提供する Firebase CLI ツールを使用して、プログラムでビルドをテスターに配布します。ビルドのテスターとリリースノートを指定できます。
アプリの Firebase アプリ ID を指定し、必要に応じてリリースノートとテスターのメールアドレスを含むファイルを追加して、最新の iOS ビルド test.ipa
を配布します。
firebase appdistribution:distribute test.ipa \ --app 1:1234567890:ios:0a1b2c3d4e5f67890 \ --release-notes "Bug fixes and improvements" --testers-file testers.txt
Firebase CLI を使用してビルドを自動化する方法の詳細については、Firebase CLI を使用して iOS アプリをテスターに配布するをご覧ください。
サービス認証情報を使用して認証する
App Distribution fastlane プラグインまたは Firebase CLI をサービス アカウントで使用します。これにより、アプリケーションのデフォルト認証情報が利用され、CI の管理に役立ちます。サービス アカウントは Google アカウントの一種で、ユーザーではなくアプリケーションを表します。CI システムでは、サービス アカウントを使用して App Distribution ワークロードを実行します。詳細については、サービス アカウントを使用して認証するをご覧ください。
Workload Identity 連携を使用している場合は、サービス アカウント キーではなく認証情報構成ファイルを生成して使用できます。
リリース上限に注意する
App Distribution では、アプリごとに最大 1,000 個のリリースがサポートされます。リリースの上限を超えると、App Distribution は上限を超えた古いリリースを自動的に削除します。リリースの上限を管理する方法については、アプリのリリースが可能な期間をご覧ください。
同じテスターのセットを複数のリリースに追加する
リリースに多くのテスターを追加する場合は、App Distribution のテスターの一括管理機能を使用します。
グループを使用して、同じテスターを複数のリリースに追加することをおすすめします。グループはアクセス制御リストとして機能します。グループからテスターを削除すると、そのテスターはそのグループに配布されたすべてのリリースにアクセスできなくなります。詳しくは、テスターをグループに追加する、またはグループからテスターを削除するをご覧ください。
管理するテスターが多い場合は、Firebase コンソールを使用してテスターを一括で追加または削除できます。テスターの追加と削除を自動的に行うには、Firebase CLI、fastlane、または一般公開の Firebase App Distribution API を使用します。
テスターの上限に注意する
App Distribution では、Firebase プロジェクトまたは App Distribution グループに追加できるテスターの数が制限されています。これらの上限を超えると、追加のテスターにアプリを配布できなくなります。テスターの上限については、アプリにテスターを追加する場合の制限をご覧ください。
新しい iOS テスター デバイスの管理と自動追加
App Distribution では、追加の iOS テスター デバイスを登録することで、Apple Developer Portal で iOS テスター デバイスを管理できます。新しいテスター iOS デバイスは、メールまたは CSV ファイルで通知されます。詳細については、CSV ファイルからテスターをインポートするをご覧ください。また、fastlane を使用して新しいデバイスのエクスポートをプログラマティックに行うこともできます。
UDID を自動的に pull して Apple Developer コンソールに追加し、アプリを再ビルドして配布する fastlane アクションを設定する方法については、App Distribution と fastlane を使用してプレリリース版の iOS ビルドを迅速に配布するをご覧ください。
テスターがテストに自己登録できるようにする
より多くのテスターにアプリを簡単に配布できるように、招待リンクを使用することをおすすめします。招待リンクは、テスターが自身のメールアドレスを入力してアプリのテストに登録することができる一意の URL です。ユーザーがアプリテスターのリストに自身を追加できるので、内部テストをさらにシームレスに進めることができます。
招待リンクのユースケースとしては、会社の dogfood プログラム、大規模な QA チームのある組織、個々のクライアントがテスターのアクセス権を制御できるようにするデベロッパー グループなどがあります。
グループに招待リンクを作成することをおすすめします。招待リンクを使用して登録したテスターは、今後のリリースに自動的に追加されます。
詳細については、招待リンクを作成するとグループに対してテスターを追加または削除するをご覧ください。
テスターが重要なバージョンのテストを実施することを確認する
新しいバージョンがアップロードされると、テスターにメールで通知されます。この通知に加え、以下の機能(リリースリンクとアプリ内アラート)を使用して、テスターが特定のアプリ バージョンを確実にテストできるようにします。
リリースリンク: 特定のバージョンをテスターと共有する場合は、この機能を使用します。リリースリンクの使用方法については、Firebase コンソールを使用して iOS アプリをテスターに配布するをご覧ください。これらのリンクは Firebase および fastlane のコマンドライン(CLI)ツールで利用して、ビルド自動化ツールで使用することもできます。
アプリ内アラート: テスターにアプリの最新バージョンのテストを確実に実施させる場合に使用します。Firebase App Distribution iOS SDK を統合することで、アプリの新しいビルドが利用可能になったときにアプリ内で直接アラートを表示できます。アプリ内アラートを追加する詳しい方法については、新しいビルドについてテスターに通知するをご覧ください。
退職したテスターのアクセス権を自動的に削除する
CI / CD 内部テストフローが稼働したら、退職したユーザーが内部ビルドにアクセスできないようにする必要があります。ビルドに対するテスターのアクセス権を簡単に管理できるように、App Distribution には以下のオプションが用意されています。
fastlane: Fastfile ファイルを使用するか、fastlane アクションを直接実行します。fastlane を使用してテスターを削除する方法については、fastlane を使用して iOS アプリをテスターに配布するをご覧ください。
一般公開の Firebase App Distribution API:
testers.batchRemove
エンドポイントを使用します。