CI / CD を使用して QA テスターに Android アプリを配布するためのベスト プラクティス

このドキュメントでは、Firebase App Distribution を使用して Android プレリリース テスト ワークフローを CI / CD 環境で持続可能かつ再現可能にするためのベスト プラクティスを紹介します。このソリューションには Gradle と fastlane が含まれていますが、さらに柔軟性を高めるため、Firebase コンソール、Firebase CLI、一般公開の Firebase App Distribution API を介して利用できるソリューションも用意されています。また、最適なエクスペリエンスを得るための事前計画ができるように、リリースとテスターの上限についても説明します。

Apple プラットフォームも使用している場合は、CI / CD と fastlane を使用して Apple アプリを QA テスターに配布するためのベスト プラクティスをご覧ください。

始める前に

このドキュメントのベスト プラクティスを実施する前に、Firebase コンソールでアプリごとに App Distribution を有効にしてください。App Distribution を有効にしていない場合は、404 エラーが発生します。

App Distribution を有効にするには、以下の操作を行ってください。

  1. Firebase コンソールで App Distribution ページを開きます。
  2. Android アプリを選択します。
  3. [利用開始] をクリックします。

Android App Bundle(AAB)はよく使用される一般的な Android パッケージ形式となっています。Google Play にリンクして AAB をテスターに配布する機能を設定することをおすすめします。

CI / CD パイプラインを使用してプレリリース テスト ワークフローを自動化する

CI / CD でアプリのビルドとリリースの自動化をテスターに行う場合は、fastlane または Gradle を使用することをおすすめします。また、Firebase CLI を使用して、さまざまな Firebase プロダクトにアクセスすることもできます。

fastlane を使用する

fastlane は、iOS アプリと Android アプリのビルドとリリースを自動化するオープンソースのツールです。これを使用して、App Distribution を CI / CD パイプラインに統合します。最新リリースをビルドしてテスターに自動的に配布することで、テスターには常にアプリの最新のテスト バージョンが用意されます。

App Distribution を fastlane と統合する方法については、fastlane を使用して Android アプリをテスターに配布するをご覧ください。

Gradle を使用する

Gradle を使用すると、App Distribution Gradle プラグインを利用して App Distribution を Android ビルドプロセスに統合できます。このプラグインを使用すると、アプリの build.gradle ファイルでテスターとリリースノートを指定して、アプリのさまざまなビルドタイプやバリアントを配布できます。

App Distribution を Gradle と統合する方法については、Gradle を使用して Android アプリをテスターに配布するをご覧ください。

Firebase CLI を使用する

App Distribution が提供する Firebase CLI ツールを使用して、プログラムでビルドをテスターに配布します。ビルドのテスターとリリースノートを指定できます。

アプリの Firebase アプリ ID を指定し、必要に応じてリリースノートとテスターのメールアドレスを含むファイルを追加して、最新の Android ビルドを配布します。

firebase appdistribution:distribute test.aab  \
    --app 1:1234567890:android:0a1b2c3d4e5f67890  \
    --release-notes "Bug fixes and improvements" --testers-file testers.txt

Firebase CLI を使用してビルドを自動化する方法の詳細については、Firebase CLI を使用して Android アプリをテスターに配布するをご覧ください。

サービス認証情報を使用して認証する

App Distribution fastlane プラグインGradle プラグイン、または Firebase CLI をサービス アカウントで使用します。サービス アカウントは Google アカウントの一種で、ユーザーではなくアプリケーションを表します。CI システムでは、サービス アカウントを使用して App Distribution ワークロードを実行します。詳細については、サービス アカウントを使用して認証するをご覧ください。

Workload Identity 連携を使用している場合は、サービス アカウント キーではなく認証情報構成ファイルを生成して使用できます。

リリース上限に注意する

App Distribution では、アプリごとに最大 1,000 個のリリースがサポートされます。リリースの上限を超えると、App Distribution は上限を超えた古いリリースを自動的に削除します。リリースの上限を管理する方法については、アプリのリリースが可能な期間をご覧ください。

同じテスターのセットを複数のリリースに追加する

リリースに多くのテスターを追加する場合は、App Distribution のテスターの一括管理機能を使用します。

グループを使用して、同じテスターを複数のリリースに追加することをおすすめします。グループはアクセス制御リストとして機能します。グループからテスターを削除すると、そのテスターはそのグループに配布されたすべてのリリースにアクセスできなくなります。詳しくは、テスターをグループに追加する、またはグループからテスターを削除するをご覧ください。

管理するテスターが多い場合は、Firebase コンソールを使用してテスターを一括で追加または削除できます。テスターの追加と削除を自動的に行うには、Firebase CLIfastlaneGradle、または一般公開の Firebase App Distribution API を使用します。

テスターの上限に注意する

App Distribution では、Firebase プロジェクトまたは App Distribution グループに追加できるテスターの数が制限されています。これらの上限を超えると、追加のテスターにアプリを配布できなくなります。テスターの上限については、アプリにテスターを追加する場合の制限をご覧ください。

テスターがテストに自己登録できるようにする

より多くのテスターにアプリを簡単に配布できるように、招待リンクを使用することをおすすめします。招待リンクは、テスターが自身のメールアドレスを入力してアプリのテストに登録することができる一意の URL です。ユーザーがアプリテスターのリストに自身を追加できるので、内部テストをさらにシームレスに進めることができます。

招待リンクのユースケースとしては、会社の dogfood プログラム、大規模な QA チームのある組織、個々のクライアントがテスターのアクセス権を制御できるようにするデベロッパー グループなどがあります。

グループに招待リンクを作成することをおすすめします。招待リンクを使用して登録したテスターは、今後のリリースに自動的に追加されます。

詳細については、招待リンクを作成するグループに対してテスターを追加または削除するをご覧ください。

テスターが重要なバージョンのテストを実施することを確認する

新しいバージョンがアップロードされると、テスターにメールで通知されます。この通知に加え、以下の機能(リリースリンクとアプリ内アラート)を使用して、テスターが特定のアプリ バージョンを確実にテストできるようにします。

  • リリースリンク: 特定のバージョンをテスターと共有する場合は、この機能を使用します。リリースリンクの使用方法については、Firebase コンソールを使用して Android アプリをテスターに配布するをご覧ください。これらのリンクは FirebasefastlaneGradle のコマンドライン(CLI)ツールで利用して、ビルド自動化ツールで使用することもできます。
  • アプリ内アラート: テスターにアプリの最新バージョンのテストを確実に実施させる場合に使用します。Firebase App Distribution Android SDK を統合することで、アプリの新しいビルドが利用可能になったときにアプリ内で直接アラートを表示できます。アプリ内アラートを追加する詳しい方法については、新しいビルドについてテスターに通知するをご覧ください。

退職したテスターのアクセス権を自動的に削除する

CI / CD 内部テストフローが稼働したら、退職したユーザーが内部ビルドにアクセスできないようにする必要があります。ビルドに対するテスターのアクセス権を簡単に管理できるように、App Distribution には以下のオプションが用意されています。