使用 gcloud 服务帐户登录到 Firebase

Posted

技术标签:

【中文标题】使用 gcloud 服务帐户登录到 Firebase【英文标题】:Login to firebase using gcloud service account 【发布时间】:2020-03-22 01:09:55 【问题描述】:

我已将功能部署到 gcloud 功能,我想配置 CI/CD 以从 gitlab 部署此功能。 要从 gitlab 执行任何操作,我需要使用

获取 firebase 身份验证令牌

firebase login:ci

命令。

问题是我需要使用 gcloud 服务帐户获取此令牌,当我运行时,该令牌未显示在浏览器中

firebase login:ci

我有这个服务帐户数据(project_idprivate_keyprivate_key_id 等)

我应该如何授权使用这个acc?

【问题讨论】:

嗨,正如@Michael Bleigh 提到的,使用 ADC 的服务首先在 GOOGLE_APPLICATION_CREDENTIALS 环境变量中搜索凭据。除非您特别要求 ADC 使用其他凭据(例如,用户凭据),否则您应该设置此环境变量指向您的服务帐户密钥文件(创建服务帐户密钥时下载的 .json 文件。您能否告诉我们此解决方案是否适合您? 【参考方案1】:

如果您将名为 GOOGLE_APPLICATION_CREDENTIALS 的环境变量设置为指向您的服务帐号 JSON 文件的路径,Firebase CLI 将自动选取该变量并使用它来授权命令。在这种情况下,您无需登录或提供--token 参数。

【讨论】:

【参考方案2】:

如果有人发现这个并且想知道如何在 CircleCI 上做到这一点,这对我有用。

    在 GCP Console 中为您的服务帐号生成一个 json 文件密钥 在组织级别或项目级别将 json 设置为 CircleCI 环境变量 我们在组织级别使用一个称为GSA_KEY 在您的工作流配置中,在运行 firebase 命令之前,请运行以下命令: echo echo $GSA_KEY > "$HOME"/gcloud.json 然后运行firebase deploy 命令,首先将路径设置为GOOGLE_APPLICATION_CREDENTIALS

部署运行如下:

steps:
  - checkout
  - run:
      name: Create SA key JSON
      command: echo $GSA_KEY > "$HOME"/gcloud.json
  - run:
      name: Deploy to Firebase
      command:
        GOOGLE_APPLICATION_CREDENTIALS="$HOME"/gcloud.json firebase deploy [project specific stuff]

【讨论】:

【参考方案3】:

使用命令:

gcloud auth activate-service-account xyz@project-id.iam.gserviceaccount.com  --key-file=/path/to/file.json --project=project-id
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/file.json"

【讨论】:

以上是关于使用 gcloud 服务帐户登录到 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

如何在 gcloud 中使用多个服务帐户?

gcloud\kubectl 身份验证问题:忘记服务帐户

在没有 gcloud 的情况下获取服务帐户身份验证令牌?

在使用 BigQuery API 的 python 插入作业期间登录失败

Firebase 工具:以服务帐号身份登录

如何阻止某人更改 gcloud 配置文件?