有没有任何方法可以在firebase云功能中执行回滚



我们正在Firebase上的NodeJS/TS中运行一个更大的后端应用程序,该应用程序具有大约180个云函数,Firestore作为数据库。到目前为止,Firebase已经满足了我们的需求,但我们已经达到了一个使用水平,即使是少量的停机时间也会造成很大的损失。由于云功能的数量,一次完整部署可能需要30分钟,因此我们通常只对更改后的功能进行部分部署,这仍然需要大约10分钟。我正试图找到一种方法,在生产部署后发现错误的情况下,能够快速回滚到给定函数的前一版本。Firebase似乎不提供回滚功能,因此唯一的选择是使用以前的版本重新部署代码。一个问题是部署时间(单个函数最多10分钟(,另一个问题则是部分部署时的git版本控制。通常情况下,会有一个分支准确地反映出可以使用的产品,但对于部分部署,情况已不再如此。使用prod的一对一分支维护良好的git版本控制的唯一选择是每次都进行完全部署,但这需要大量的时间(30多分钟,不包括重试(。firebase部署通常也会失败或超过部署配额,这使得CI管道之类的事情变得非常困难(它必须自动重试失败的功能,而且时间仍然是个问题,因为在停机的情况下,部署30分钟以上是不可接受的(。有人找到一个很好的回滚(版本控制(解决方案和一个能在规模上与firebase很好地配合的git结构吗?

Firebase的云函数是基于云函数的,它们的行为是相同的。现在,无法将流量路由到以前的版本(并执行回滚(。(我还可以告诉你,NodeJS16现在是GA,而不是Firebase文档的Cloud Functions中仍然提到的Beta(

下一个Cloud Functions运行时是烹饪(在预览中可用(。该运行时基于云运行,允许流量拆分/路由,因此接受回滚。


因此,目前还没有用Firebase函数执行简单回滚的解决方案。一个很大的变化可能是直接使用Cloud Functions V2运行时,或者事件Cloud Run,但这是代码库中的一个很大变化。

另一种解决方案可能是在所有功能之前使用负载均衡器,并:

  • 以新名称部署新功能(不更新当前部署,每次部署新版本时创建一个新服务(
  • 使用新功能创建新的无服务器后端
  • 更新URL映射以考虑新的后端

过一段时间后,删除旧的函数版本。

这也需要大量的工作来将其付诸行动。更新URL地图时的广告延迟应该在3到5分钟之间,与当前的解决方案相比,这并不是一个很大的优势。

它看起来不是唯一一个。回答了前面的问题。我建议设置一些版本控制。我会首先解决失败的部署问题,这应该会减少deploy time和重新部署时间,特别是如果它是多个。您可以使用不同的部署分支,也可以设置临时环境。我会投入时间来设置GIT控制/交钥匙。

每个用户Ariel:


Each time you make a deploy to a cloud function you get an output line like this:
sourceArchiveUrl: gs://my-store-bucket/us-central1-function_name-xxoxtdxvxaxx.zip
I entered my Google Cloud Platform Developer Console -> Cloud Functions -> function_name -> Source tab
and there almost at the bottom it says: Source location
my-store-bucket/us-central1-function_name-xxoxtdxvxaxx.zip
the same as it was shown in the CLI, but without gs:// that link lead me to the following: https://storage.cloud.google.com/my-store-bucket/us-central1-function_name-........
I removed from the link everything that came after
https://storage.cloud.google.com/my-store-bucket
and that lead me to a huge list of files that each one of them represented a an image of all my cloud functions at the time point of each time i have made a deploy, exactly what i needed!
The only thing left to do was to locate the file with the last date before my mistaken deploy

来源:检索旧版本的谷歌云功能源

截至2019年回滚到旧版本的firebase功能(谷歌云功能(

2021年:回滚Firebase主机和功能联合部署?

您可以在不使用GIT版本控制等的情况下回滚Firebase Hosting部署,但不能回滚功能。使用部分,您可以部署多个功能/组。您可以签出要回滚的远程配置模板,并将其保存长达90天。

https://firebase.google.com/docs/remote-config/templates

Firebase部分部署多组功能

https://firebase.google.com/docs/cli#roll_back_deploys

相关内容

  • 没有找到相关文章

最新更新