dehio3’s diary

仕事、生活、趣味のメモ

CircleCI実践入門でちょとつまずいたのでメモ

f:id:dehio3:20190711135531p:plain

はじめに

9/14にCircleCI実践入門が発売されました。

amzn.to

ここ一年くらい業務で利用していなかったので、再入門する為に読みました!

インフラエンジニアなのでterraformserverless frameworkなどIaCのCI/CDとしては利用していたのですが、アプリ開発でのCI/CDの利用については理解できていませんでした。

本書の「9.モバイルアプリ開発での活用」は、サンプルコードを利用したアプリ開発における利用方法が記載されており、アプリ開発の知識のない人でも利用イメージを掴む事ができるようになっていたのがとてもよかったです!

書籍内ではモバイルアプリのE2Eテストとして、「Test Lab」を利用しているのですが、利用した事がなく少しつまずいたので、調べついでに残しておきたいと思います。

Firebase Test Labとは

firebase.google.com

Firebase Test Lab を使用すると、アプリをさまざまなデバイスや構成でテストして、ユーザーのデバイスでどのように動作するかをより正確に把握できます。

無料プラン(Spark)の制限

とりあえず動きが確認できればいいだけなので、無料プランの利用枠を確認。

firebase.google.com

Spark プランと Flame プランの割り当て Spark と Flame のどちらのプランでも、テスト実行のみに限定された 1 日の割り当て(仮想デバイス 10 台と物理デバイス 5 台)を使用してテストできます(1 日最大 15 台のテスト実行)。この制限はテストの種類(インストゥルメンテーション、Robo、ゲームループ)やマトリックスに関係なく適用されます。

Test Labの準備

書籍内ではTest Labの準備として以下の記載があります。

  1. Firebaseプロジェクトの作成
  2. Google SDKツールの承認
  3. サービスアカウントの作成
  4. Cloud Testing API/Cloud Tool Results APIの有効化

サービスアカウントへ設定するロール

サービスアカウントの作成作業を進めるとロールの設定画面が表示されます。

書籍内では言及してないのですが、以下のドキュメントをみると編集者ロールが必要な事がわかります。

firebase.google.com

2.サービス アカウントを作成します。サービス アカウントはスパムチェックやキャプチャ プロンプトの対象になりません。対象にすると、CI ビルドがブロックされる可能性があります。Google Cloud Platform Console で、編集者のロールを持つサービス アカウントを作成します。

サービスアカウントの権限設定にて編集者ロールを追加します。

f:id:dehio3:20200924161812p:plain

ちなみに、権限がないと以下のエラーが出ます。

ERROR: (gcloud.firebase.test.android.run) Unable to access the test environment catalog: ResponseError 403: Not authorized for project ***********************

課金の有効化

編集者ロールを追加後に実行すると今度は以下のエラーが出ました。

Creating results bucket [gs://cloud-test-***********************-blueprints] in project [***********************].
ERROR: (gcloud.firebase.test.android.run) Permission denied while creating bucket [cloud-test-***********************-blueprints]. Is billing enabled for project: [***********************]?

書籍内に記載されていますが、Test Labのテスト結果はGoogle Cloud Storageに保存される為、bucketの作成権限がない事によるエラーのようです。

storage.buckets.create権限を含むStorage 管理者ロールをさらに追加します。

f:id:dehio3:20200924163901p:plain

が、このロールも設定してもエラーが解消されません。

Creating results bucket [gs://cloud-test-***********************-blueprints] in project [***********************].
ERROR: (gcloud.firebase.test.android.run) Permission denied while creating bucket [cloud-test-***********************-blueprints]. Is billing enabled for project: [***********************]?

サービスアカウントの再作成など色々試してダメで、Cloud Strageのコンソールをみると

f:id:dehio3:20200924164553p:plain

Cloud Strageは課金を有効化しないと使えないんですね。。

有効化したら無事にworkflowが実行できました。

おわりに

最終的にはStorage 管理者ロールは不要で、編集者ロールだけで動作します。

GCPを利用した事ない人は同じ事になりそうだったので、誰かの助けになれば幸いです。