问答中心分类: FIREBASE独立的开发和生产 Firebase 环境
0
匿名用户 提问 17分钟 前

我正在考虑将 Firebase 用作 MBaaS,但是我找不到任何可靠的解决方案来解决以下问题:
我想设置两个独立的 Firebase 环境,一个用于开发,一个用于生产,但我不想在开发和生产之间手动复制功能(例如远程配置设置、通知规则等)环境。
有什么我可以依赖的工具或方法吗?从头开始设置远程配置或通知规则可能是一项艰巨的任务并且风险太大。
有什么建议么?有比拥有两个独立环境更好的方法吗?
在您发布另一个解释如何设置单独的 Firebase 帐户的问题的答案之前:这不是问题,请再次阅读。问题是:如何在单独的 dev 和 prod 帐户之间转移更改,或者比在它们之间手动复制更好的解决方案。

Patrick Jackson 回复 17分钟 前

有这个功能会很棒!

Patrick Jackson 回复 17分钟 前

@Timmerz 查看第一个答案:仅与托管和数据库相关,但与其他功能无关。

Patrick Jackson 回复 17分钟 前

我有一个类似的问题。我通过以下方式解决了它:检查这个:stackoverflow.com/questions/51646512/…我通过以下方式解决了这个问题: 1.创建调试配置请点击链接 medium.com/@Miqubel/…medium.com/@Miqubel/…2.然后创建一个新的数据库请点击链接:firebase.google.com/docs/database/usage/…3.在您的代码中根据您的产品风味连接到基于产品的相应数据库

Patrick Jackson 回复 17分钟 前

@KunalKhaire 这不是问题,您可以通过在构建风格中添加单独的配置来轻松连接到单独的 Firebase 环境。问题是在这些环境之间移动 Firebase 级别的更改。假设您在 dev 中开发了一个新的远程配置,如何在 prod env 上应用它而不用大惊小怪。

Patrick Jackson 回复 17分钟 前

@LOG_TAG 你创建一个全新标签的理由是什么?这是否解决了 [firebase] 尚未涵盖的任何新技术?

Patrick Jackson 回复 17分钟 前

@MichaelDodd #askfirebase 是 google firebase 开发人员 QA 下更受欢迎的主题标签!为了更好地了解我们所面临的问题,我创建了这个,有什么反馈吗?twitter.com/search?q=%23askfirebase

Patrick Jackson 回复 17分钟 前

@LOG_TAG 标签倾向于反映问题中概述的技术或问题。从标签帮助页面“只有当你认为你的问题涵盖了一个以前没有人在这个网站上问过的新主题时,你才应该创建新标签。”– 我认为 [askfirebase] 不符合该标准,但如果您认为它应该是一个标签,我们可以将它带到 meta 中。

Patrick Jackson 回复 17分钟 前

如果您想遵循 stevecowling 解决方案,它可能会对您有所帮助:stackoverflow.com/questions/48649120/…

11 Answers
0
Lunchbox 回答 17分钟 前

如果您使用的是 firebase-tools 有一个命令firebase use它使您可以设置要用于哪个项目firebase deploy
firebase use --add将显示您的项目列表,选择一个,它会要求您输入别名。从那里你可以firebase use aliasfirebase deploy将推动该项目。
在我个人使用中,我将 my-app 和 my-app-dev 作为 Firebase 控制台中的项目。

racs 回复 17分钟 前

据我了解,Firebase 工具对于部署托管文件和数据库很有用,但它对数据库、分析或远程配置没有任何作用。还是我错过了什么?

Chris 回复 17分钟 前

@racs 看起来这是最近的,但我即将开始尝试使用 cli 在我的开发实例上进行数据播种/数据维护:firebase.googleblog.com/2015/11/…

racs 回复 17分钟 前

@chris 谢谢,这至少是一个开始。但这看起来是一件相当神秘的事情。祝你好运!

Chris 回复 17分钟 前

@racs 就播种数据和开发流程而言,效果非常好。我可以根据版本化的 npm 运行命令和版本化的种子数据可靠地改变我的开发数据库。您也在寻找一种复制元数据的方法,但不幸的是我没有看到。

racs 回复 17分钟 前

@Chris 感谢您让我们知道这件事。据我所知,这仍然是一个悬而未决的问题。

Luke Becker 回复 17分钟 前

@Lunchbox,您如何限制对“my-app-dev”实例的访问?例如,您是否指定哪些域或用户可以访问您的页面?

Lunchbox 回复 17分钟 前

@LukeBecker我没有限制任何东西。我目前的 Firebase 东西只是一个玩具应用。我一直在努力熟悉基础设施。

ProblemsOfSumit 回复 17分钟 前

但这也意味着支付两次..?

Andrés Biarge 回复 17分钟 前

关于将默认项目绑定到自定义域并将开发项目绑定到不同子域的任何想法?这样您就可以在同一个 Firebase 项目中投入生产之前进行测试

0
Patrick Jackson 回答 17分钟 前

我目前没有使用 Firebase,但像你自己一样考虑它。看起来要走的路是在控制台上创建一个完全独立的项目。在旧的 Firebase 网站上有一篇博文推荐这个,不过现在看起来已经被删除了。https://web.archive.org/web/20160310115701/https://www.firebase.com/blog/2015-10-29-managing-development-environments.html
这个讨论也推荐相同的:https://groups.google.com/forum/#!msg/firebase-talk/L7ajIJoHPcA/7dsNUTDlyRYJ

racs 回复 17分钟 前

感谢你的回答。拥有两个独立的项目很可能是唯一的选择。但是,在它们之间复制数据充其量是复杂的。我想知道 Firebase 工具是否可以复制规则、受众设置等。在我看来,它只处理与数据库相关的操作:github.com/firebase/firebase-tools

racs 回复 17分钟 前

到目前为止,我的结论与您的相同:两个单独的项目是解决方案,即使它不方便:没有简单的方法可以在项目之间移动数据。

krico 回复 17分钟 前

不确定你是否见过这个,但你可以在 firebase-server 上运行你的开发:firebase.googleblog.com/2015/04/…

racs 回复 17分钟 前

@krico 不太确定这个项目有什么用处。我想要实现的是在一个实例上开发与 Firebase 相关的功能,然后将它们部署到生产实例。你有什么提示吗?

krico 回复 17分钟 前

@racs,在这种情况下,我发现的只是建议的内容,创建第二个 firebase 应用程序并将其用于开发。

racs 回复 17分钟 前

这正是我所做的,但问题是:如何在两个环境之间复制任何设置?例如。远程配置、观众设置等?将这些手动添加到生产环境中很容易出错。

Patrick Jackson 回复 17分钟 前

我遇到的一个问题是使用具有相同包和签名的多个 firebase 实例进行身份验证。控制台不允许您将相同的包 sha1 添加到多个项目中,因此这可能是不可能的。文档说可以通过将 clientid 列入白名单来解决,但我没有成功。另一个解决方法是单独的包名称(更准确地说是’applicationIds)’,但还有其他复杂情况

Patrick Jackson 回复 17分钟 前

我已经找到了解决上述问题的方法!可以对多个 Firebase 进行身份验证。这里有详细说明groups.google.com/forum/m/#!topic/firebase-talk/GnmClQZ4nCs

racs 回复 17分钟 前

另请阅读:firebase.googleblog.com/2016/08/…

0
Kunal Khaire 回答 17分钟 前

我这样做的方式:

  1. 我在 firebase 上有 2 个项目——一个用于 DEV,另一个用于 PROD
  2. 在本地,我的应用程序也有 2 个分支 – 一个名为 DEV,另一个名为 PROD
  3. 在我的 DEV 分支中,我总是有 DEV firebase 项目的 JSON 文件,同样适用于 PROD

这样我就不需要维护我的 JSON。

Kunal Khaire 回复 17分钟 前

我确实理解,但是根据最新的 firebase 版本,所提出的问题没有通用的解决方案。您必须使用当前选项并得出最佳实践。可能是我的回答没有指出这一点,但我只是想以我的观点帮助提问者。

0
Chetan Gaikwad 回答 17分钟 前

您将需要管理不同的构建类型
按照这个

  1. 首先,在 Firebase 控制台创建一个新项目,名称 id 为 YOURAPPNAME-DEV
  2. 单击“添加 android 应用程序”按钮并创建一个新应用程序。例如,将其命名为 com.yourapp.debug。新的 google-services.json 文件将自动下载
  3. 在您的项目 src 目录下创建名为“debug”的新目录并在此处复制新的 google-services.json 文件
  4. 在你的模块级别 build.gradle 添加这个
    debug {
            applicationIdSuffix ".debug"
        }

现在,当您构建调试时,将使用来自“debug”文件夹的 google-services.json,当您在发布模式下构建时,将考虑来自模块根目录的 google-services.json。

Michael Osofsky 回复 17分钟 前

如果有人需要官方文档,Google 服务 Gradle 插件知道在 的子目录下查找 google-services.jsonsrc对于 buildType 解释heredeveloper.google.com/android/guides/…

0
Millhorn 回答 17分钟 前

我正在根据我刚刚找到的信息更新这个答案。
步骤1
在 firebase.google.com 中,创建您的多个环境(即:dev、staging、prod)

我的网站开发
mysite-staging
我的网站产品

第2步
一个。直接移动到您想要成为默认值的位置(即;开发)
湾。跑firebase deploy
C。部署后,运行firebase use --add
d。将出现一个选项以从您当前拥有的不同项目中进行选择。
滚动到要添加的项目:mysite-staging, 并选择它。
e.然后,系统会要求您提供该项目的别名。进入分期.
再次为 prod 和 dev 运行 items ae,这样每个环境都会有一个别名

知道你所处的环境
firebase use
default (mysite-dev)
* dev (mysite-dev)
staging (mysite-staging)
prod (mysite-dev)
(其中一个环境的左侧将有一个星号。这就是您当前所在的环境。它也将以蓝色突出显示)

在环境之间切换
firebase use staging或者firebase use prod在它们之间移动。
一旦你进入你想要的环境,运行firebase deploy您的项目将在那里部署。
这里有几个有用的链接…
CLI 参考
部署到多个环境
希望这可以帮助。

walidvb 回复 17分钟 前

当您说多个环境时,您的意思是多个项目?

Millhorn 回复 17分钟 前

我的意思是多个环境。阅读帖子这里为了澄清。这就是它的标题。它与同一个项目有关,但与 dev/qa 和生产有关。

walidvb 回复 17分钟 前

谢谢,我刚刚看完了整个视频。这说,我明白他使用不同的项目针对不同的环境,不是专门的环境同一个项目