9

我正在尝试使用glcoudCLI 作为 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 测试实验室管理员
  • 存储管理员
  • 存储对象管理员
  • 存储对象创建者
  • 存储对象查看器
  • Firebase 规则系统

任何帮助将不胜感激。谢谢。

4

6 回答 6

11

您应该能够使用在 Google Cloud Console 中创建的服务帐号。您的服务帐号是否具有所需的项目编辑角色?(如本文档所述:https ://firebase.google.com/docs/test-lab/continuous )

于 2018-01-18T22:39:52.163 回答
5

在多次点击 Firebase 控制台和 Google Cloud Console、阅读 SO、在 Slack 上寻求帮助以及比我愿意承认的更多的反复试验之后,我发现 Firebase 控制台有一个服务帐户页面:

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

这与 Google Cloud Console 中的服务帐户页面不同

https://console.cloud.google.com/iam-admin/serviceaccounts/project?project-name-12345

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

于 2018-01-18T17:58:15.717 回答
4

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

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

即使在那之后,我仍然有一些错误。所以,我添加了一堆角色如下。

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

那也没有解决。所以,最后,我通过将编辑角色添加到服务帐户来 应用P. Davis的答案。https://stackoverflow.com/a/48331465/2353939

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

于 2020-02-26T14:54:13.593 回答
3

这是我放入服务帐户的角色列表:

  1. Firebase - Firebase 管理员(我认为这是矫枉过正。我可能会稍后更新)
  2. 项目 - 编辑
  3. 存储 - 存储对象创建者

无论您是从 Firebase 还是谷歌云控制台创建服务帐户都没有关系。只要您在服务帐户中拥有这些角色,您就应该能够运行 Firebase 测试实验室。

于 2020-01-03T06:36:07.667 回答
2

对于偶然发现这一点并且不想使用功能强大的项目编辑角色的人,以下是我用于我的服务帐户的角色: Firebase 测试实验室角色

我认为 Firebase Analytics Viewer 角色不是必需的,因为它主要只是执行测试。要查看结果,我们改用开发者帐户,但没有尝试将其删除。

于 2021-09-08T04:53:58.240 回答
0

我们遇到了同样的权限问题storage.objects.create。我们已经添加了这里提到的所有角色,除了Editor我们想要避免的角色,但它仍然失败。我们使用的是服务帐户,它肯定具有适当的权限。

最后我们的解决方法是手动设置一个云存储桶,然后--results-bucketgcloud. 请参阅此处的文档。这终于为我们解决了。

于 2021-12-07T17:20:46.050 回答