在Teamcity中使用多个TFS分支。怎么样?

时间:2014-08-20 10:49:11

标签: tfs branch teamcity-8.0

我们使用TFS2010进行源代码管理,使用TeamCity 8.x进行CI。在我们的项目中,我们有Main分支用于发布和错误修复,而Dev用于大多数开发。两个分支的构建步骤是相同的​​。我们有一些构建配置可以通过:

List of build configurations

我似乎无法让TeamCity在一个分支上执行checkout,并且仅在签入的分支上运行build。

首次尝试:我添加了一个VCS Root指向包含$/RootMain分支的Dev并创建了结帐规则:

Checkout rules

首先登录Main工作正常。在失败后签到Dev

Build Failed to start

其中DoNotExportAttribute是在Dev分支中修改的文件。即使我有 复选框“在构建之前清除结帐目录中的所有文件”。

我的第二次尝试是将两个分支添加为VCS根:

VCS Roots

但是这导致两个分支的检出都进入同一个目录,而第一个分支首先被结账覆盖了。

如果没有为每个分支创建单独的配置,我们的案例是否有补救措施? (我们从config-per-branch开始,但事实证明,对于我们在构建中执行的步骤,维护很重要)

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您正在尝试将单个TeamCity项目用于主要和分支构建。我不建议这样做。通过为主要和分支构建重用相同的项目,您将在两个不同的动物之间共享版本号。构建版本1.1.4可能是主构建版本,而版本1.1.5可能是分支构建版本。

通过查看构建创建的工件,还很难确定哪个源代码是选择的并包含在该工件中的源代码。可执行文件是主要的还是分支的可执行文件?

我们解决主要与分支问题的方式是创建一个“模板”项目,其中包含我们所有的构建配置(每个构建配置模板,因此它们都可以在一个位置进行更改)以构建我们的软件。主线和分支项目都是通过复制此“模板”项目并将VCS根目录设置到适当的目录位置来创建的。

我们运行五个构建代理,每个构建需要相当长的时间。如果主要和任何分支碰巧同时被修改,那么为每个分支创建单独的项目允许我们并行运行构建,而对于单个项目,构建将按顺序完成。

希望这有帮助。