使用Google Cloud Build部署没有Firebase CI令牌的Firebase

时间:2019-06-11 19:04:45

标签: firebase google-cloud-firestore google-cloud-functions google-cloud-build

在我的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添加一些“特殊”权限,以允许在没有此FIREBASE_TOKEN的情况下进行部署。

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

1 个答案:

答案 0 :(得分:1)

是的,有可能。但是您需要做几件事

假设您的云构建看起来像这样

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上传自己的firebase图像,我想您已经对此很熟悉,否则,我基本上写了一篇类似的文章来介绍如何here反正...

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

Voila!您可以像使用sdk一样对其进行测试

gcloud builds submit --config cloudbuild.yaml .

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

有意见的评论:我不是这种方法的忠实拥护者,我尝试了几次,并且总是存在一些问题,但这就是我们称之为{{1}的原因}:)

祝你好运。