継続的インテグレーション(CI)システムを使用してテストを開始する

継続的インテグレーション(CI)システムを使用してアプリを開発する際に、Firebase Test Lab を使用できます。継続的インテグレーション システムでは、アプリのソースコードにアップデートを追加するたびにアプリを自動的にビルドし、テストすることができます。

Firebase Test Lab と Jenkins CI を併用する

ここでは、Test Lab と Jenkins CI を併用する方法について説明します。

要件

Firebase Test Lab と Jenkins を併用するには、あらかじめ以下の手順を実施する必要があります。

  1. gcloud を設定します。gcloud コマンドラインから Firebase Test Lab を使用する手順に沿って Firebase プロジェクトを作成し、ローカル Google Cloud SDK 環境を構成します。

  2. サービス アカウントの作成と承認を行います。サービス アカウントはスパムチェックやキャプチャ プロンプトの対象になりません。対象にすると、CI ビルドがブロックされる可能性があります。Google Cloud コンソール編集者のロールを持つサービス アカウントを作成し、有効にします(詳細については、gcloud auth activate-service-account のドキュメントをご覧ください)。

  3. 必要な API を有効にします。サービス アカウントでログインした後、Google Developers Console の API ライブラリ ページGoogle Cloud Testing APICloud Tool Results API を有効にします。これらの API を有効にするには、コンソール上部の検索ボックスに API 名を入力し、各 API の概要ページで [有効にする] をクリックします。

Jenkins をインストールして設定する

Jenkins CI は Linux または Windows 上でインストールと設定を行うことができます。このガイドの一部の情報は、Linux 上での Jenkins CI のインストールと実行に固有であり、ファイルパスにはスラッシュ(/)が含まれています。

Linux または Windows を実行している PC に Jenkins をダウンロードしてインストールするには、Jenkins のインストールの手順に沿って操作します。Jenkins をインストールした後、Jenkins の起動とアクセスの手順に沿って設定を完了し、Jenkins ダッシュボードにアクセスします。

グローバル セキュリティを設定する

Jenkins をインストールした時点では、ユーザー認証とアクセス制御が構成されていません。Firebase Test Lab と Jenkins を併用する前に、グローバル セキュリティを構成してアクセス制御とユーザー認証を実施します。

グローバル セキュリティを構成するには

  1. サーバー上の Jenkins ダッシュボードに移動します。ダッシュボードに移動するには、http://<servername>:8080 にアクセスします。ここで <servername> は、Jenkins をインストールしたコンピュータの名前を示します。
  2. Jenkins ダッシュボードで [Jenkins の管理] をクリックし、次に [グローバル セキュリティの設定] をクリックします。
  3. [グローバル セキュリティの設定] ページで [セキュリティを有効化]、[保存] の順にクリックします。

Jenkins のセキュリティ設定を構成する方法については、簡単なセキュリティ標準的なセキュリティ設定Jenkins のセキュリティ保護をご覧ください。

Jenkins プロジェクトを作成する

次に、Firebase Test Lab でアプリの継続的インテグレーション テストを実施するためのプロジェクトを作成します。

Jenkins プロジェクトを作成するには

  1. サーバー上の Jenkins ダッシュボードに移動します。ダッシュボードに移動するには、http://<servername>:8080 にアクセスします。ここで <servername> は、Jenkins をインストールしたコンピュータの名前を示します。
  2. Jenkins ダッシュボードで [新規ジョブ作成] をクリックします。
  3. [ジョブ名] フィールドにプロジェクトの名前を入力します。
    • 単一のビルド設定を使用するプロジェクトを作成するには、[フリースタイル・プロジェクトのビルド] を選択します。
    • 複数の異なるビルド設定で動作するプロジェクトを作成するには、[マルチ構成プロジェクトのビルド] を選択します。さまざまなビルド設定(複数のロケール、複数の Android API レベルなど)を使用してアプリをビルドする場合は、マルチ構成プロジェクトが最適です。
  4. [保存] をクリックします。

プロジェクトが作成されると、ウェブブラウザにプロジェクトのメインページが表示されます。

リビジョン管理と Gradle ビルド手順を追加する

ここでは、Jenkins を GitHub などのリビジョン管理システムに統合する方法と、Gradle ビルド手順を追加してソースコードから APK パッケージを作成する方法について説明します。

GitHub などのリビジョン管理システムと統合する

GitHub などのリビジョン管理システムを使用してアプリのソースコードを管理する場合、アプリにアップデートが追加されるたびにビルドとテストの実行を自動的に行うように Jenkins を設定できます。定期的にビルドを実行するように設定することもできます。

Jenkins でのビルドの設定については、自動ビルドの設定をご覧ください。

APK パッケージを再作成する Gradle ビルド手順を追加する

リビジョン管理システムを使用してアプリのソースコードを管理する場合は、Jenkins がリビジョン管理システムからソースコードをダウンロードするたびに新しい APK バイナリを作成する Gradle ビルド手順を追加する必要があります。

  1. アプリケーションのメイン ディレクトリで以下のコマンドを実行するビルド手順を追加します。

    ./gradlew :app:assembleDebug
    ./gradlew :app:assembleDebugAndroidTest
    

  2. Test Lab でテストするときに Gradle によって作成された APK パッケージを使用するビルド手順を追加します。以下に示すシェル スクリプトの例では、このパスを <local_server_path> とすることができます。ここで <AppFolder> は、アプリの Android Studio プロジェクト フォルダを示します。

    <AppFolder>/app/build/outputs/apk
    

Jenkins に Test Lab ビルド手順を追加する

gcloud コマンドラインを使用して Test Lab を実行するビルド手順を Jenkins に追加する準備ができました。

gcloud ビルド手順を追加するには

  1. プロジェクトのメインページから [設定] をクリックします。
  2. プロジェクトの設定ページで [ビルド] セクションまで下にスクロールし、[ビルド手順の追加] メニューから [シェルの実行] を選択します。

  3. [Jenkins シェルの実行コマンド] ウィンドウで以下を入力します。<local_server_path> はサーバー上のサンプルアプリのパスに、<app_apk> はアプリの APK に、<app_test_apk> はアプリのテスト APK に置き換えます。

    gcloud firebase test android run --app <local_server_path>/<app_apk>.apk
    --test <local_server_path>/<app_test_apk>.apk
    

テスト結果を分析する

Test Lab がアプリのテストを完了すると、Firebase コンソールで、またはプロジェクトの Google Cloud Storage バケットでテスト結果を確認できます。上述のシェルコマンドに gsutil コマンドを追加して、ローカルのコンピュータにテスト結果データをコピーすることもできます。詳しくは、Firebase Test Lab の結果の分析をご覧ください。

他の CI システムを使用した継続的インテグレーション

Firebase Test Lab と他の CI システムを併用する方法については、以下のドキュメントをご覧ください。