如何更新子站点?

时间:2018-04-14 14:19:01

标签: git

所以我有一个用Coldfusion编码的网站,它基本上是一个专门的CRM。我把它卖给了客户。让我们说我把它卖给10个客户......我会把最新的代码推出给所有客户。随着时间的推移,这些客户中的任何一个都可能会要求对其网站进

我经常对我的主代码进行更改/错误修复/新功能等。使用所有子站点仍包含的共享代码更新其他10个站点的最佳方法是什么?

现在我只使用Araxis Merge将我的主代码与其网站进行比较,并复制相关的更改等。

我只是在想,如果它扩展到我想要的水平,那么继续更新将是一场噩梦。

我在本地开发环境中的所有网站上使用git来跟踪更改,但在这种情况下我不认为版本控制有帮助。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

从您的问题来看,听起来他们的代码类似,但网站A包含特定功能的代码,但网站B没有该代码。我建议的目标是让所有子站点共享完全相同的代码库。

根据这些子站点的设置方式以及每个站点的自定义级别,这可能是也可能不是一件容易的事。你很可能需要进行相当多的重构才能让它发挥作用。

从长远来看,这将使您的生活变得更加轻松,因为您可以使用基于单个仓库的持续部署解决方案将所有子站点部署在一起。

您可能已经在做一些这样的事情了,但这是我如何设置的:

  • 每个子站点使用相同的数据库(或相同数据库的集合)。必须为多租户设置数据库,因此每个表都有一个"子站点ID"列。

  • 然后,您的代码将根据唯一的子站点ID有条件地显示/隐藏这些客户端的某些自定义功能。如果每个站点都有自己的<cfif childSiteID eq 'exampleSiteID'>,您可以在那里设置站点ID。您可能会在整个代码中使用大量_.cloneDeep(value)

  • 一旦您在完全相同的代码库上运行每个站点,您就可以设置持续部署。

一个例子是当一些东西被合并到master中时,用一个Github webhook触发Jenkins。然后,Jenkins将构建一个docker容器,然后可以将其部署到服务器。像这样:

https://www.stratoscale.com/blog/devops/practical-devops-use-case-github-jenkins-docker/

如果你走这条路,基本上你正在做的是创建一个有一个事实来源的平台。如果您需要对单个站点或所有站点进行更改,则可以编辑从中部署所有站点的单个仓库。