【问题标题】:Travis and Firebase: deploy only changed functionsTravis 和 Firebase:仅部署更改的功能
【发布时间】:2017-10-11 22:51:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    30 分钟及以下

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

    【讨论】:

    • 我喜欢这种方法。可以通过添加有关如何完成此操作的更多详细信息来改进此答案:我正在考虑来自 webpack、脚本、构建文件的示例/sn-ps。谢谢!
    • 一篇关于你的方法的博文或文章会很棒!
    【解决方案2】:

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

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

    【讨论】:

    • 开发者不能在提交注释中识别出修改的函数吗?然后,您可以从提交日志中编写相同的部署脚本。
    • 我想过,但是一个推送可能包含多个提交,感觉越来越复杂/冒险尝试找出“自上次部署以来做一个日志,从所有内容中刮掉函数名称提交,部署”。
    • 如果它这样做听起来非常酷,但确实越来越冒险。好电话!
    猜你喜欢
    • 2019-02-20
    • 2021-03-22
    • 2017-10-05
    • 2020-08-06
    • 2018-08-09
    • 2016-03-23
    • 2019-02-05
    • 2017-11-15
    • 2021-12-29
    相关资源
    最近更新 更多