【问题标题】:TeamCity CI Builds for TFS Feature BranchesTeamCity CI 为 TFS 功能分支构建
【发布时间】:2012-09-11 19:38:40
【问题描述】:

除了不断构建发布/功能分支之外,我在 Team City 中几乎所有的东西都设置得很完美。

这将很难描述,但希望它应该是有意义的。

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

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

我有以下构建参数:

env.SourceBranch = trunk

这用于配置源代码控制根:

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

这里是有趣的地方:

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

到目前为止一切顺利,但是,当我再次签入分支时,它不会自动运行。

我明白为什么会这样...结帐规则默认为trunk,这意味着它与releasesfeatures 下发生的任何签入都不匹配,但是我不确定我的选择是什么是。

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

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

编辑:

我尝试使用结帐规则,执行以下操作:

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

很遗憾,这不起作用。

看来我正在尝试做的是suggested here,这让我觉得这还不可能。

【问题讨论】:

    标签: tfs continuous-integration teamcity teamcity-7.0


    【解决方案1】:

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

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

    【讨论】: