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

4 deployment travis-ci firebase google-cloud-functions

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

Bas*_*ann 5

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

30 分钟及以下

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

  • 我喜欢这种方法。这个答案可以通过添加更多有关如何完成此操作的详细信息来改进:我正在考虑来自 webpack、脚本、构建文件的示例/片段。谢谢! (4认同)
  • 关于您的方法的博客文章或文章会很棒! (2认同)

Mic*_*igh 3

不幸的是,这并不容易做到——Firebase CLI 会部署您的所有功能,因为仅分析代码并找出受影响的功能几乎是不可能的(因为您可能需要其他文件,您可能会已更新依赖项但未更改文件等)。

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