概要
先週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
にします。
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タブから確認でき、テスト実行中のスクリーンの様子も簡単に確認できます。
まとめ
設定をOrbとして公開することでCircleCIからより簡単にFirebase Test Labでのテストを実行できるようになったと思います。
今回公開したOrbに足りない機能や不具合がありましたらPull Requestをよろしくお願いします🙏