2

在 CI 中,我们通常取出一个新副本,并检测存储库中的更改并开始构建。但是在某些情况下,不同服务器上的本地存储库在其配置文件中的某些常量的值不同,这些常量特定于每个服务器(邮寄地址可能不同,或者在特定服务器上启用/禁用日志记录)。

我的问题是在 CI 哲学中处理这些更改的最佳方法是什么,是否在每个服务器上取出新副本后,是否应该手动(一次)进行与服务器相关的更改,然后我们应该遵循检测更改的正常程序通过 SVN 到存储库

4

1 回答 1

1

以下是我在工作场所的做法:

我将配置文件保存在 SVN 中,每个环境,每个服务器类型。它是这样的 - DEVPROJ1
--- API
----- api_config_file
--- WEB
----- web_config_file
- QAPROJ1
--- API
----- api_config_file
--- WEB
----- web_config_file
- PRODPROJ1
--- API
----- api_config_file
--- WEB
----- web_config_file

这样,PROD 上的所有 API 服务器都将使用 SVN at 的配置文件PRODPROJ1/API/api_config_file,而 DEV 上的所有 API 服务器将使用 SVN at 的配置文件DEVPROJ1/API/api_config_file

我的部署脚本比部署到每台服务器都要考虑环境特定的配置。这只需告诉部署脚本即可实现:
部署到API:PRODPROJ1=10.0.0.1,API:PRODPROJ1=10.0.0.2. 然后该脚本从 SVN 中的 PRODPROJ1 获取 API 配置。

如您所见,我对所有 API 使用通用配置文件。有时每个 API 都需要特定的更改,例如本地 IP 地址。这些在安装时由部署脚本替换。您可以使用类似的方法,但不是按环境(DEVPROJ1、QAPROJ1)分隔它们,而是可以按 IP 地址或机器名称分隔它们。

无论哪种方式,我更喜欢将我的所有配置都放在 SVN 中,这样可以轻松跟踪和验证更改,而不是在随机服务器上寻找单个修改。

当然,维护这些配置文件成为一个手动过程。

于 2012-11-06T18:28:43.117 回答