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

时间:2017-10-11 22:51:56

标签: firebase deployment travis-ci google-cloud-functions

我正在使用Travis自动部署我的Firebase托管网站和云功能,因为我推送到GitHub,详细here。但是,即使对于我的具有有限数量的云功能的小型网站,部署所有功能也需要相当长的时间。如果我手动部署,我将能够使用--only来精确指定我实际更改的那些功能。有没有办法让Travis可以获得这些信息,以便只重建必要的功能?

2 个答案:

答案 0 :(得分:4)

不幸的是,这不是一件容易的事 - Firebase CLI会部署您的所有功能,因为它几乎不可能只分析代码并确定哪些功能受到影响(因为您可以要求其他文件) ,您可能已更新依赖项但未更改文件等。)。

我能想到的一件事可能就是为函数或函数组命名分支。然后,您可以git push到要部署的特定函数的分支,并且有一个脚本使用分支名称作为信号将--only functions:<fnName>传递给firebase deploy命令。这不是最迷人的解决方案,但是,根据这会给你带来多少麻烦,它可能有所帮助。

答案 1 :(得分:1)

https://m.youtube.com/watch?v=iyGHW4UQ_Ts

至少30分钟以下

此人通过将所有功能复制到云存储桶中,然后对每个文件进行比较来解决该问题。如果您所有的逻辑都在一个文件中,则此方法效果很好。但这不是大型项目所需要的。对于我自己的项目,我使用webpack为每个包含导入的函数创建一个文件。然后我为该文件生成md5哈希并将其保存到functions-lock.json。在下一次运行时,我可以轻松地检查旧的哈希值,而仅部署更改的功能。 ci应该通过将锁定文件上传到云端或执行一些git magic来管理锁定文件的状态