相同TeamCity的最佳实践跨不同的VCS根构建

RJ *_*han 5 teamcity teamcity-8.0

任何人都可以告诉我,当我想运行相同的构建配置但是在不同的VCS根目录时,配置TeamCity构建的最佳方法是什么?

例如; 我有一些存储库的"构建和测试"配置(对于repo中的每个项目),我想要复制master/develop/r1.0/etc分支中的所有设置?

在过去,我只是复制了整个构建配置集并更改了VCS根目录以实现此目的,但随着分支数量的增加(随着时间的推移增加了更多的发布分支),如何简化配置并最小化多少个位置如果关于构建的某些内容发生了变化,我需要进行更改吗?

100*_*00r 5

这是我对这个问题的看法。我认为您的解决方案是在 VCS 根中使用构建配置模板 + 参数化。我们有大约 20 个构建配置(1 个配置 = 1 个分支),仅由两个模板和一个 vcs 根创建。配置的所有常见内容都保存在模板中。只有少数特定参数在配置本身中,您可以在从模板创建配置时设置它们。其中之一是分支名称,在我的情况下与配置名称高度相关。

模板是

  1. 持续集成模板 - 您只想检查正在构建的项目
  2. 发布模板 - 构建加发布生成

VCSroot 仅指向源代码管理的根。vcs root 的分支参数设置为构建配置继承自构建配置模板的自定义分支参数。

我们有这样的分支结构

-Master
-Development
-Releases__3.4.1
         |_3.4.2
         |_3.4.3
Run Code Online (Sandbox Code Playgroud)

Master 和 development 使用持续集成模板,每个新的 release 分支使用 Release 配置模板。对我来说,为 3.4.4 分支创建新配置的过程是这样的:

  1. 创建新配置
  2. 选择模板 选择:发布
  3. 输入配置名称 输入:3.4.4
  4. 节省
  5. 运行构建

重点是发布模板中的分支名称参数是这样的

%BranchPath%=Release/%ConfigurationName%
Run Code Online (Sandbox Code Playgroud)

对于持续集成模板,它将是

%BranchPath%=%ConfigurationName%
Run Code Online (Sandbox Code Playgroud)

进一步在 VCS 根分支中设置为 %BranchPath% 从配置传递给它,因此 VCS 可以使用两个模板和所有 20 个配置,仅此而已.. :) 希望它以某种方式有所帮助