TeamCity CI为TFS功能分支构建

时间:2012-09-11 19:38:41

标签: tfs continuous-integration teamcity teamcity-7.0

除了不断构建发布/功能分支外,我几乎完全在Team City中设置了所有内容。

这很难描述,但希望它有意义。

我在TFS中有以下源代码控制布局:

$/ProjectName/releases/1.2
$/ProjectName/features/create-doodads
$/ProjectName/trunk

我有以下构建参数:

env.SourceBranch = trunk

这用于配置源控件根目录:

Root = $/ProjectName
CheckoutRule = +:%env.SourceBranch%=>./

这是事情变得有趣的地方:

当我运行自定义构建并手动指定env.SourceBranch时,构建将使用指定的分支运行,因为它是在Checkout规则中配置的。 7.1具有一个新功能,它在构建号旁边的项目页面上显示一个分支标签,然后将在构建链和构建链中的所有后续构建旁边正确显示。

到目前为止,当我再次检查分支时,它不会自动运行。

我理解为什么会发生这种情况...结帐规则默认为trunk,这意味着它与releasesfeatures下发生的任何签到都不匹配,但我是不完全确定我的选择是什么。

我认为我想要的是能够指定一个构建触发器,它设置一个传递给vcs root的参数......或类似的东西。

非常感谢任何帮助,如果不清楚,请告诉我,我会尝试进一步解释。

编辑:

我尝试使用结帐规则,做这样的事情:

+:trunk=>./
+:releases/*=>./
+:features/*=>./

不幸的是,这不起作用。

我正在尝试做的事情似乎是suggested here,这让我觉得这还不可能。

1 个答案:

答案 0 :(得分:0)

我认为你所描述的只是试图根据触发器自动构建不同的分支(类似于git的工作原理)。不幸的是,在我写这篇文章时,我不知道TC中的分布式模型(如git和mercurial)之外的源控件的选项。

我建议基于模板创建不同的构建配置,每个模板使用构建参数中指定的不同分支。我认为,如果您遵循CI推广模式,这将是最有帮助和最容易追踪的。因此,您的示例中有三个构建配置,并且有一个模板,除了一个参数外,所有三个构建之间的所有内容都完全相同:%env.SourceBranch%。