Travis和Firebase:仅部署更改的功能

Travis和Firebase:仅部署更改的功能,firebase,deployment,travis-ci,google-cloud-functions,Firebase,Deployment,Travis Ci,Google Cloud Functions,我正在使用Travis在推送到GitHub时自动部署Firebase托管的网站和云功能,详细说明如下。然而,即使对于我的云功能有限的小型网站,部署所有功能也需要相当长的时间。如果我手动部署,我将能够使用——仅精确指定我实际更改的功能。有没有办法让Travis可以使用这些信息,从而只重建必要的功能?不幸的是,这并不容易做到——Firebase CLI将部署您的所有功能,因为几乎不可能只分析代码并找出哪些功能受到影响(因为您可能需要其他文件,所以您可能已经更新了依赖项,但没有更改任何文件,等等) 我

我正在使用Travis在推送到GitHub时自动部署Firebase托管的网站和云功能,详细说明如下。然而,即使对于我的云功能有限的小型网站,部署所有功能也需要相当长的时间。如果我手动部署,我将能够使用
——仅
精确指定我实际更改的功能。有没有办法让Travis可以使用这些信息,从而只重建必要的功能?

不幸的是,这并不容易做到——Firebase CLI将部署您的所有功能,因为几乎不可能只分析代码并找出哪些功能受到影响(因为您可能需要其他文件,所以您可能已经更新了依赖项,但没有更改任何文件,等等)

我能想到的一件事可能是,黑客会为函数或函数组命名分支。然后您可以
git将
推送到您要部署的特定函数的分支,并有一个脚本,该脚本使用分支名称作为信号,将
--仅函数:
传递到
firebase部署
这并不是最吸引人的解决方案,但是,这可能会有所帮助,这取决于你对此的不满程度。

30分钟及以下


这家伙通过将所有函数复制到一个云存储桶中,然后对每个文件进行区分来解决问题。如果所有逻辑都在一个文件中,这很有效。但这不是大型项目所需要的。对于我自己的项目,我使用webpack为包含导入的每个函数创建一个文件。然后我为该文件生成md5哈希ile并将其保存到functions-lock.json。下次运行时,我可以轻松检查旧的哈希值,只部署更改的函数。ci应该通过将锁文件上载到云或执行一些git魔术来管理锁文件的状态

开发人员不能在提交注释中识别修改的函数吗?您可以编写ame从提交日志中部署。我考虑过这一点,但是推送可能包含多个提交,并且试图弄清楚“从上次部署后做一个日志,从所有提交中删除函数名,然后部署它”感觉越来越复杂/风险越来越大。如果这样做听起来非常酷,但实际上风险越来越大。好主意!我喜欢这种方法。这个答案可以通过添加更多关于如何实现这一点的详细信息来改进:我在想来自网页、脚本、构建文件的示例/片段。谢谢!关于你的方法的博客文章或文章将非常棒!