使用 Google Cloud Build 在没有 Firebase CI 令牌的情况下部署 Firebase

Use Google Cloud Build to deploy Firebase without Firebase CI token

在我的 package.json 中有这一行:

{
  "deploy:ci": firebase deploy --force --only functions --token \"$SECRET\"
}

还有我的 cloudbuild.yaml:

steps:
  - name: "gcr.io/cloud-builders/docker"
    args: ["build", "--tag", "gcr.io/$PROJECT_ID/functions", "."]

  - name: "gcr.io/$PROJECT_ID/functions"
    args: ["yarn", "deploy:ci"]
    secretEnv: ["FIREBASE_TOKEN"]

secrets:
  - kmsKeyName: projects/myproject/locations/global/keyRings/enviroment/cryptoKeys/firebase
    secretEnv:
      FIREBASE_TOKEN: VERY_LONG_UNGLY_AND_BORING_BASE64_STRING

我想知道是否可以向 cloudbuild 添加一些 "special" 权限,以便在没有此 FIREBASE_TOKEN.

的情况下进行部署

(所有文件都在同一个项目中)

是的,这是可能的。但是您需要做一些事情

假设您的云构建如下所示

steps:
  - name: "gcr.io/cloud-builders/npm"
    args: ["install"]

  - name: "gcr.io/cloud-builders/npm"
    args: ["run", "build]

  - name: "gcr.io/cloud-builders/firebase"
    args: ["deploy"]

无论如何,您需要从 here, I assume you are already familiar with this, otherwise, I wrote basically a similar post about how to do this part here 上传自己的 firebase 图片...

之后,您要求的 IAM 是 Firebase Admin,您需要将其分配给您的 ...@cloudbuild.gserviceaccount.com 帐户。

瞧!你可以像这样测试它(使用 sdk)

gcloud builds submit --config cloudbuild.yaml .

当然要指向你的文件位置。

有主见的评论:我不是这种方法的忠实拥护者,我尝试了几次,但总有一些问题,但是,这就是我们打电话的原因它 opinionated comment :)

祝你好运。