将不同的服务帐户-credentials.json 文件部署到不同的云功能
Deploying different service-account-credentials.json file to different cloud functions
正在创建两个独立的 Firebase 项目,一个作为开发环境,另一个作为我们的生产环境,以便在测试新功能时模拟真实情况。
每当我需要将云功能部署到任一项目时,我都会执行以下操作:
将正确的服务帐户凭据复制并粘贴到服务帐户-credentials.json 文件
Select 各个项目的别名(dev 或 prod)
firebase use dev
或 firebase use prod
- 将云功能部署到各自的项目
firebase deploy --only functions
我觉得这是一种幼稚而乏味的做法。有没有更好的方法可以在我的函数目录中有一个 service-account-credentials-prod.json 和一个 service-account-credentials-dev.json 文件,然后取决于我的项目别名'使用,它会知道要部署哪个服务帐户凭据?
如果有人能指出正确的方向,我将不胜感激
我也有两个项目,开发和生产。
在 /functions
我有两个文件:
/functions/production-cred.json
和
/functions/development-cred.json
我使用相应的命令进行部署:
firebase deploy --only functions -P development
或
firebase deploy --only functions -P production
.
在index.js
中我使用环境变量process.env.GCLOUD_PROJECT
来判断使用的是哪个环境。此变量将包含您的项目名称,生产和开发之间应该不同,您不能打印它来检查。
这是一个示例:
const env = process.env.GCLOUD_PROJECT
const development = (env == "myDevProject")
const database = development ? devDbUrl : prodDbUrl
const serviceAccountFile = development ? "devCred.json" : "prodCred.json"
const serviceAccount = require(`./${serviceAccountFile}`)
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: database
})
这样做不需要您使用 firebase use dev|prod
设置别名。我以前和你一样这样做,这种改进使部署更快、更可靠。
正在创建两个独立的 Firebase 项目,一个作为开发环境,另一个作为我们的生产环境,以便在测试新功能时模拟真实情况。
每当我需要将云功能部署到任一项目时,我都会执行以下操作:
将正确的服务帐户凭据复制并粘贴到服务帐户-credentials.json 文件
Select 各个项目的别名(dev 或 prod)
firebase use dev
或 firebase use prod
- 将云功能部署到各自的项目
firebase deploy --only functions
我觉得这是一种幼稚而乏味的做法。有没有更好的方法可以在我的函数目录中有一个 service-account-credentials-prod.json 和一个 service-account-credentials-dev.json 文件,然后取决于我的项目别名'使用,它会知道要部署哪个服务帐户凭据?
如果有人能指出正确的方向,我将不胜感激
我也有两个项目,开发和生产。
在 /functions
我有两个文件:
/functions/production-cred.json
和
/functions/development-cred.json
我使用相应的命令进行部署:
firebase deploy --only functions -P development
或
firebase deploy --only functions -P production
.
在index.js
中我使用环境变量process.env.GCLOUD_PROJECT
来判断使用的是哪个环境。此变量将包含您的项目名称,生产和开发之间应该不同,您不能打印它来检查。
这是一个示例:
const env = process.env.GCLOUD_PROJECT
const development = (env == "myDevProject")
const database = development ? devDbUrl : prodDbUrl
const serviceAccountFile = development ? "devCred.json" : "prodCred.json"
const serviceAccount = require(`./${serviceAccountFile}`)
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: database
})
这样做不需要您使用 firebase use dev|prod
设置别名。我以前和你一样这样做,这种改进使部署更快、更可靠。