はじめに
9/14にCircleCI実践入門が発売されました。
ここ一年くらい業務で利用していなかったので、再入門する為に読みました!
インフラエンジニアなのでterraform
のserverless framework
などIaCのCI/CDとしては利用していたのですが、アプリ開発でのCI/CDの利用については理解できていませんでした。
本書の「9.モバイルアプリ開発での活用」は、サンプルコードを利用したアプリ開発における利用方法が記載されており、アプリ開発の知識のない人でも利用イメージを掴む事ができるようになっていたのがとてもよかったです!
書籍内ではモバイルアプリのE2Eテストとして、「Test Lab」を利用しているのですが、利用した事がなく少しつまずいたので、調べついでに残しておきたいと思います。
Firebase Test Labとは
Firebase Test Lab を使用すると、アプリをさまざまなデバイスや構成でテストして、ユーザーのデバイスでどのように動作するかをより正確に把握できます。
無料プラン(Spark)の制限
とりあえず動きが確認できればいいだけなので、無料プランの利用枠を確認。
Spark プランと Flame プランの割り当て Spark と Flame のどちらのプランでも、テスト実行のみに限定された 1 日の割り当て(仮想デバイス 10 台と物理デバイス 5 台)を使用してテストできます(1 日最大 15 台のテスト実行)。この制限はテストの種類(インストゥルメンテーション、Robo、ゲームループ)やマトリックスに関係なく適用されます。
Test Labの準備
書籍内ではTest Labの準備として以下の記載があります。
サービスアカウントへ設定するロール
サービスアカウントの作成作業を進めるとロールの設定画面が表示されます。
書籍内では言及してないのですが、以下のドキュメントをみると編集者
ロールが必要な事がわかります。
2.サービス アカウントを作成します。サービス アカウントはスパムチェックやキャプチャ プロンプトの対象になりません。対象にすると、CI ビルドがブロックされる可能性があります。Google Cloud Platform Console で、編集者のロールを持つサービス アカウントを作成します。
サービスアカウントの権限設定にて編集者
ロールを追加します。
ちなみに、権限がないと以下のエラーが出ます。
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 管理者
ロールをさらに追加します。
が、このロールも設定してもエラーが解消されません。
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のコンソールをみると
Cloud Strageは課金を有効化しないと使えないんですね。。
有効化したら無事にworkflowが実行できました。
おわりに
最終的にはStorage 管理者
ロールは不要で、編集者
ロールだけで動作します。
GCPを利用した事ない人は同じ事になりそうだったので、誰かの助けになれば幸いです。