所以,我最近做了类似的事情,发现下面的策略是最好的选择。我将假设您此时熟悉 git 分支以及 Heroku 遥控器。如果你不是,你应该先阅读这个:https ://devcenter.heroku.com/articles/git#multiple-remotes-and-environments
我正在采取的主要策略是拥有一个单一的代码库(一个单一的 Git 存储库),其中包含:
master
包含所有共享代码的分支:模板、视图、URL。
- 许多
site
基于 的分支,master
其中包含所有特定于站点的自定义:css、图像、设置文件(如果它们有很大不同)。
它的工作方式是这样的:
首先,确保你在master
分支上。
其次,为您的一个域创建一个新的 git 分支,例如:git checkout -b somedomain.com
.
第三,自定义您的somedomain.com
分支,使其看起来像您想要的那样。
接下来,通过运行实时部署somedomain.com
到 Heroku heroku create somedomain.com --remote somedomain.com
。
现在,将您的somedomain.com
分支代码推送到您的新 Heroku 应用程序:git push somedomain.com somedomain.com:master
. 这将在 Heroku 上部署您的代码。
现在您已经somedomain.com
使用自己的 Heroku 应用程序部署了您的分支,您可以通过添加--remote somedomain.com
到您的普通 Heroku 命令来完成所有普通 Heroku 的工作,例如:
heroku pg:info --remote somedomain.com
heroku addons:add memcache:5mb --remote somedomain.com
- 等等
所以,现在你基本上有了两个分支:一个master
分支,一个somedomain.com
分支。
返回您的master
分支,为您的下一个域创建另一个新分支:git checkout master; git checkout -b anotherdomain.com
. 然后根据您的喜好对其进行自定义(css,特定于站点的内容),并按照我们上面所做的相同方式进行部署。
现在我相信你现在可以看到这是怎么回事。我们的每个 custom 都有一个 git 分支,domains
每个域都有自己的 Heroku 应用程序。好处(显然)是这些项目自定义中的每一个都基于master
分支,这意味着您可以轻松地一次对所有站点进行更新。
假设您更新了master
分支中的一个视图——如何一次将其部署到所有自定义站点?容易地!
赶紧跑:
git checkout somedomain.com
git merge master
git push somedomain.com somedomain.com:master
# 部署更改
并为您的每个域重复。在我的环境中,我编写了一个脚本来执行此操作,但如果您愿意,手动操作也很容易。
无论如何,希望这会有所帮助。