使用 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_id
、private_key
、private_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的主要内容,如果未能解决你的问题,请参考以下文章