无法使用gcloud和服务帐户运行Firebase测试实验室测试:403,没有storage.objects.create

时间:2018-01-18 17:23:23

标签: firebase google-cloud-storage firebase-test-lab

我正在尝试使用glcoud CLI作为CircleCi中的服务帐户运行检测测试。我跑的时候:

gcloud config set project project-name-12345
gcloud auth activate-service-account firebase-testlab-serviceuser@project-name-12345.iam.gserviceaccount.com --key-file ${HOME}/client-secret.json
gcloud firebase test android run --type instrumentation --app debug-app.apk --test debug-test.apk --device model=Nexus6P,version=27,locale=en,orientation=portrait --environment-variables coverage=true,coverageFile=/sdcard/tmp/code-coverage/connected/coverage.ec --directories-to-pull=/sdcard/tmp --timeout 20m

我明白了:

ERROR: (gcloud.firebase.test.android.run) Could not copy [debug-app.apk] to [gs://test-lab-xxxxxxxx-yyyyyyyy/2018-01-18_17:14:09.964449_zPAw/] ResponseError 403: firebase-testlab-serviceuser@project-name-12345.iam.gserviceaccount.com does not have storage.objects.create access to bucket test-lab-xxxxxxxx-yyyyyyyy..

使用API​​控制台(https://console.cloud.google.com/iam-admin/iam/project)我已经为我的服务用户提供了我认为相关的所有权限:

  • Firebase崩溃符号上传器
  • Firebase测试实验室管理员
  • Storage Admin
  • 存储对象管理
  • 存储对象创建器
  • 存储对象查看器
  • Firebase规则系统

任何帮助都会非常感激。感谢。

4 个答案:

答案 0 :(得分:4)

经过大量点击Firebase控制台和Google云端控制台,阅读SO,请求Slack帮助以及比我更愿意承认的更多试验和错误,我发现Firebase控制台有一个服务帐户页面:< / p>

dbplyr

这与Google云端控制台中的服务帐户页面不同

https://console.firebase.google.com/u/0/project/project-name-12345/settings/serviceaccounts/adminsdk

事实证明,您需要Firebase服务帐户,您无法通过云控制台创建一个帐户。超级,超级烦人。

答案 1 :(得分:4)

您应该可以使用在Google云端控制台中创建的服务帐户。您的服务帐户是否具有所需的项目编辑角色? (如本文档中所述:https://firebase.google.com/docs/test-lab/continuous

答案 2 :(得分:3)

我创建密钥的步骤如下:
1. Firebase控制台https://console.firebase.google.com/
2.项目设置
3.“服务帐户”标签
4.在“服务帐户”面板中,Firebase Admin SDK
5.在“ Firebase Admin SDK”面板的底部,“生成新的私钥”

这是 Etherton 的回答
https://stackoverflow.com/a/48327579/2353939

即使在那之后,我仍然有一些错误。因此,我添加了许多角色,如下所示。

Firebase测试实验室管理员
Firebase服务管理服务代理
Firebase Admin SDK管理员服务代理
服务帐户令牌创建者
存储对象创建者

那也没有解决。因此,最后,我应用了 P。戴维斯(Davis)可以通过向服务帐户添加编辑者角色来进行回答。 https://stackoverflow.com/a/48331465/2353939

添加编辑器角色的步骤如下
1.转到Google云控制台https://console.cloud.google.com/iam-admin/iam
2.进入“ IAM”
3.使用从firebase控制台下载的json文件中的“ client_email”找到您需要编辑的服务帐户。
4.单击右侧的“编辑”图标
5.向下滚动并“添加其他角色”
6.单击输入字段,然后输入“ Editor”进行搜索
7.选择带有副标题“编辑对所有资源的访问权限”的那个
8.保存
9.现在您应该可以使用它

答案 3 :(得分:0)

这是我添加到服务帐户中的角色的列表:

  1. Firebase-Firebase管理员(我认为这太过分了。我可能稍后再更新)
  2. 项目-编辑器
  3. 存储-存储对象创建者

从Firebase还是Google Cloud Console创建服务帐户都没有关系。只要您在服务帐户中具有这些角色,就应该可以运行Firebase测试实验室。