我正在考虑使用Firebase作为MBaaS,但是我找不到任何可靠的解决方案来解决以下问题:
我想建立两个独立的Firebase环境,一个用于开发,一个用于生产,但我不想手动复制功能(例如。开发和生产环境之间的远程配置设置、通知规则等)。
有什么我可以依赖的工具或方法吗?从头开始设置远程配置或通知规则可能是一项艰巨的任务,风险太大。
有什么建议吗?有没有比拥有两个独立环境更好的方法呢?
在你发表另一个解释如何建立独立Firebase帐户的问题答案之前:这不是问题,再读一遍。问题是:如何在独立的开发帐户和prod帐户之间转移更改或任何比在它们之间手动复制更好的解决方案。
我正在根据我刚刚找到的信息更新这个答案。
步骤1
在firebase.google.com中,创建多个环境(即;Dev, staging, prod)
mysite-dev
mysite-staging
mysite-prod
步骤2
a.移动到你想作为默认值的直接位置(即;dev)
b.执行firebase deploy命令
c.部署完成后,执行firebase use——add命令
d.会出现一个选项,让你从当前拥有的不同项目中进行选择。
滚动到您想要添加的项目:mysite-staging,并选择它。
e.然后您将被要求为该项目提供一个别名。输入暂存。
再次为prod和dev运行a-e项,这样每个环境都将有一个别名
了解你所处的环境
使用firebase运行
默认(mysite-dev)
* dev (mysite-dev)
分期(mysite-staging)
刺激(mysite-dev)
(其中一个环境的左边会有一个星号。这就是你现在的处境。它也将以蓝色突出显示)
在环境之间切换
运行firebase使用staging或firebase使用prodiver在它们之间移动。
进入所需的环境后,运行firebase deploy,项目将部署到该环境中。
这里有一些有用的链接…
CLI参考
部署到多个环境
希望这能有所帮助。
正如每个人都指出的那样,你需要不止一个项目/数据库。
但是为了回答你关于需要能够将设置/数据等从开发复制到生产的问题。我也有同样的需求。在几个月的开发和测试中,我不想手动复制数据。
我的结果是将数据备份到一个存储桶,然后从那里将其恢复到另一个数据库。这是一种相当粗糙的方法——我做了整个数据库备份/恢复——但是您可以从这个方向寻找一种更可控的方法。我还没有用过它——它很新——但这可能是一个解决方案:NPM Module firestore-export-import
编辑:Firestore备份/导出/导入信息在这里云Firestore导出和导入数据
如果你使用的是Firebase RTDB,而不是Firestore,这个文档可能会有帮助:
Firebase自动备份
您将需要正确地设置权限,以允许您的生产数据库访问与您的开发相同的存储桶。
祝你好运。
Firebase有一个页面,介绍了如何为dev和prod设置它
https://firebase.google.com/docs/functions/config-env
Set environment configuration for your project To store environment
data, you can use the firebase functions:config:set command in the
Firebase CLI. Each key can be namespaced using periods to group
related configuration together. Keep in mind that only lowercase
characters are accepted in keys; uppercase characters are not allowed.
For instance, to store the Client ID and API key for "Some Service",
you might run:
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
Retrieve current environment configuration To inspect what's currently
stored in environment config for your project, you can use firebase
functions:config:get. It will output JSON something like this:
{
"someservice": {
"key":"THE API KEY",
"id":"THE CLIENT ID"
}
}