我正在开发一个 Web 应用程序,在 Github 上托管源代码并在 Heroku 上运行该应用程序。一切工作正常,但我有一个问题,我无法解决。在部署代码之前,我运行一些脚本来优化代码(缩小、连接文件等)。 heroku 应用程序仅使用该应用程序的优化版本。
基本上,我有两个文件夹:dev
and production
. Dev
包含我编写的源代码,production
由我的构建脚本生成(我使用 grunt 和 requirejs)。目前,这两个文件夹都在我的 Git 存储库中,并且都被推送到 Github 和 Heroku。我宁愿只拥有dev
仅在 Github 上production
在赫罗库上。
我读了一些如何为 Heroku 设置不同分支的文章,如在这个博客中描述 http://suitmymind.com/blog/2009/06/02/deploying-multiple-environments-on-heroku-while-still-hosting-code-on-github/。我可以设置一个生产分支并且只有production
文件夹在那里,同时保留dev
文件夹到我的主分支?或者我需要单独的存储库吗?
有人尝试过类似的东西吗?我认为这并不是什么不寻常的事情。
您可能只想考虑使用 heroku.slugignore
文件(参考https://devcenter.heroku.com/articles/slug-compiler https://devcenter.heroku.com/articles/slug-compiler).
该文件将允许您删除dev
Heroku 部署到每个服务器实例的包中的文件夹,同时允许您将所有代码保存在同一个存储库中。
问题的根源在于将部署策略视为将最终位上传到服务器的策略,其中这些位是构建存储库的人工制品。在这种情况下,构建通常与源分开存储和归档。
Heroku 的模型与此略有不同,它假设您的存储库是要部署的工件。差异很小,但就您而言,这仅意味着您需要将您希望 heroku 提供服务的部分提交到存储库。
另一种思考方式是,你可以不用你的production
文件夹,作为启动服务器的一部分,将运行该脚本来生成production
文件夹文件。这将允许您删除production
文件夹,并保持存储库干净,但代价是在服务器每次启动时运行此过程。这可能被证明是非常昂贵和不可取的(Heroku 在放弃服务器之前等待服务器启动的时间是有限的),但希望有助于澄清 Heroku 和 git 的关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)