部署到多个环境 [TeamCity]

Deploying to multiple environments [TeamCity]

我们在 TeamCity (v. 8.1.5) 中有一个复杂的项目结构,我们试图在没有用户输入的情况下将其部署到 30 多个环境中。

一直以来,我们一直在复制项目并使用环境变量来标识要部署到的环境。这种方法的主要缺点是推出构建更新。如果我们需要全面更新构建中的单个变量,我们需要在 30 多个项目中执行此操作,每个项目可能包含 20 个构建。这一切都是一个非常耗时的过程。

您如何在 TeamCity 设置中管理对多个环境的部署?

我们部署了大约 15 个环境,以及大约 30 个奇怪的构建。我们有很多相同的问题,并且我们以不同的方式解决它。

首先,正如有人已经提到的,我们使用了很多模板。在 Teamcity 中,如果构建模板不是你最好的朋友,那你就用错了。

其次,我们充分利用项目的分层组织,广泛使用继承属性。如果可以组织部署构建以最大程度地减少唯一参数值的数量(将公共参数推到项目树中),则可以节省大量时间和麻烦。例如,假设您按 OS 和版本组织项目:

Deployments
---Windows
------Vista
------W7
------W8
---Linux
------CentOS
---------6.4
---------6.5
------Ubuntu

然后您可以对参数进行分组,例如,按 OS(Windows 或 Linux),然后按每个参数分组。

最后,我们通过 VCS roots and/or 命名文件控制了很多参数值。 select 编辑了正确的参数文件,然后首先执行了一个小的构建步骤,该步骤读取参数文件并使用 TeamCity 自定义构建输出语法将它们的值加载到当前构建中。

对于 select 'correct' 参数文件,您可以将它们全部保存在 VCS 中的一个公共位置(即 https://svn/deployments/buildParms) and name each file uniquely, or you can parameterize your VCS root to find the place in source control to get the file (i.e. https://svn/deployments/%MY_VERSON%/deploy.properties.

结合使用上述方法,我们可以有效地管理 15 个部署环境和 7 个活动代码分支,总共 105 种不同的部署配置。

希望对您有所帮助。