9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidAdvent Calendar 2018

Day 14

Firebase Test Labでのテストの設定をCircleCI Orbsとして公開する

Last updated at Posted at 2018-12-14

概要

先週DeployGateでのAPK配布設定をCircleCI Orbsとして公開するという記事を書いたのですが、Orbsが面白いのでAndroidアドベントカレンダーもOrbsネタで書こうと思います。

CircleCIでFirebase Test Labでのテストを実行するための設定はTesting With Firebase Test Labという形で公式ドキュメントにまとめられていますが、より簡単に設定ができた方が便利です。

今回、CircleCI Orbsとして設定を公開することでFirebase Test Labの設定を簡単にできないか試してみました。

Orbとは?

.circleci/config.ymlでの設定内容をパッケージとしてまとめ、再利用可能な形で公開できる機能です。CircleCI 2.1 configuration(2018/12/7時点でプレビュー)で追加されました。Orbの詳細は公式ドキュメントをご覧ください。

OrbとしてFirebase Test Lab向けの設定内容をまとめ公開することで、Firebase Test Labによるテストを含むWorkflowをより素早く構築することが可能になるはずです。

公開したOrb

Orb registryのページはこちらです。
https://circleci.com/orbs/registry/orb/horie1024/firebase-test-lab

また、ソースコードはこちらになります。
https://github.com/horie1024/orb_firebaae_test_lab

使い方

Enable build processingを有効化

CircleCI 2.1 configurationは2018/12/7時点でプレビューであるので、プロジェクトのSettings->Advanced SettingsでEnable build processingをOnにします。

image.png

Orbのimport

.circleci/config.ymlに次の設定を追加しOrbをimportします。versionは2.1を指定してください。

version: 2.1

orbs:
  firebase: horie1024/firebase-test-lab@volatile

コマンドの実行

firebase/testコマンドでFirebase Test Labでのテストを開始します。

firebase/test:
    service_account_key: SERVICE_ACCOUNT_KEY
    firebase_project_id: FIREBASE_PROJECT_ID
    type: instrumentation
    test_settings: test_settings.yml:instrumentation-test

service_account_keyには、GCP Projectのサービスアカウントキー1をbase64エンコードした値を格納した環境変数を指定します。また、firebase_project_idにはFirebaseプロジェクトのIDを、typeには、instrumentationもしくはroboを指定します。

test_settingsには、次のようなymlを指定することでテストを実行するデバイスを指定できます。

instrumentation-test:
  device:
    - model: Nexus5
      version: 21
      locale: ja_JP
      orientation: portrait
    - model: mata
      version: 25
      locale: ja_JP
      orientation: portrait

その他パラメーターの詳細はOrbのドキュメントをご覧ください。

最終的なconfig.ymlは次の通りです。

version: 2.1

orbs:
  firebase: horie1024/firebase-test-lab@volatile

jobs:
  build:
    docker:
      - image: circleci/android:api-28-alpha
    steps:
      - checkout
      - run:
          name: Download Dependencies
          command: ./gradlew androidDependencies
      - run:
          name: Build debug APK and release APK
          command: |
              ./gradlew :app:assembleDebug
              ./gradlew :app:assembleDebugAndroidTest
      - firebase/test:
          service_account_key: SERVICE_ACCOUNT_KEY
          firebase_project_id: FIREBASE_PROJECT_ID
          type: instrumentation
          test_settings: test_settings.yml:instrumentation-test

Androidプロジェクトでの使用例

実際に今回公開したOrbを使用してFirebase Test Labでのテストを実行してみました。サンプルプロジェクトはこちらです。

テスト結果の確認

テスト結果はArtifactsタブから確認でき、テスト実行中のスクリーンの様子も簡単に確認できます。

image.png

まとめ

設定をOrbとして公開することでCircleCIからより簡単にFirebase Test Labでのテストを実行できるようになったと思います。

今回公開したOrbに足りない機能や不具合がありましたらPull Requestをよろしくお願いします🙏

  1. サービスアカウントの作成や環境変数への格納についてはこちらの記事でまとめています。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?