TeamCity为TFS功能分支构建CI

TeamCity为TFS功能分支构建CI,tfs,continuous-integration,teamcity,teamcity-7.0,Tfs,Continuous Integration,Teamcity,Teamcity 7.0,除了不断构建发布/功能分支之外,我在TeamCity中几乎所有的设置都非常完美 这将很难描述,但希望它能有意义 我在TFS中有以下源代码管理布局: $/ProjectName/releases/1.2 $/ProjectName/features/create-doodads $/ProjectName/trunk 我有以下生成参数: env.SourceBranch = trunk 这用于配置源代码管理根目录: Root = $/ProjectName CheckoutRule = +:%

除了不断构建发布/功能分支之外,我在TeamCity中几乎所有的设置都非常完美

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

我在TFS中有以下源代码管理布局:

$/ProjectName/releases/1.2
$/ProjectName/features/create-doodads
$/ProjectName/trunk
我有以下生成参数:

env.SourceBranch = trunk
这用于配置源代码管理根目录:

Root = $/ProjectName
CheckoutRule = +:%env.SourceBranch%=>./
这里是事情变得有趣的地方:

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

然而,到目前为止还不错,当我再次签入分支时,它不会自动运行

我明白为什么会这样。。。签出规则默认为
trunk
,这意味着它不匹配在
releases
features
下发生的任何签入,但是我不确定我的选项是什么

我想我想要的是能够指定一个构建触发器,该触发器设置一个传递给vcs根目录的参数。。。或者类似的

任何帮助都将不胜感激,如果不清楚,请告诉我,我将尝试进一步解释

编辑:

我试着玩结账规则,做了如下的事情:

+:trunk=>./
+:releases/*=>./
+:features/*=>./
不幸的是,这不起作用


看来我要做的就是现在的样子,这让我觉得这还不可能。

我想你所描述的只是试图根据触发器从不同的分支自动构建(类似于git的工作方式)。不幸的是,据我所知,在撰写本文时,TC中的分布式模型(如git和mercurial)之外的源代码控制并不是一个选项

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