在同一分支的多台服务器上部署代码

Deploy code on multiple servers from same branch

这是我的情况。

我有一个一直部署在单个服务器上的项目。我们的情况发生了变化,现在项目部署在国际上的几台服务器上。到目前为止,我们仍然只有一个分支。该项目现在包含通用代码,但也包含特定国家/地区的代码。

我想更改它,但我不知道如何更改。我有两种可能性。第一个是从我的原籍国为每个国家创建一个分支机构。但在此之前,我必须做一些清理工作以隔离通用代码并为每个国家/地区保留特定代码。这种解决方案的缺点是人们很快就会在许多分支机构之间迷路。

第二种解决方案是保留一个分支,但我必须更新代码以创建通用控制器,这些控制器将根据国家/地区重定向到特定控制器。

如果您认为还有其他解决方案可以解决此问题,我很感兴趣。

请记住,git 是一种源代码管理工具,分支等结构旨在解决源代码管理问题。很久以前有人观察到,因为 git 有一个将更改传输到远程 repo 的协议,所以它可以用作部署工具;在非常简单的情况下,它可以很好地完成这项工作。但人们常常以此为起点,然后随着他们的 build/deployment 要求变得越来越复杂,他们希望 git 能够随之扩展。如果它是一个构建和部署工具,它可能会这样做。但事实并非如此。

"branch per country" 的缺点不仅仅是人们可能会在树枝间迷路。更大的缺点是在所有分支之间保持通用代码同步将是乏味的,并且最终可能不会可靠地发生。

您的其他解决方案可能更好,但它将国家/地区的识别视为动态 run-time 决定,而实际上它可以在部署时决定(因为很明显给定的部署实例要么总是在国家/地区-1,或始终在国家 2,或 ...)。

为什么不使用可以支持多种配置的构建和部署工具,以便您可以使用单个代码库并让这些工具为任何给定服务器构建正确版本的站点?