4

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

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

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

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

我有以下构建参数:

env.SourceBranch = trunk

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

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

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

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

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

我理解为什么会发生这种情况......结帐规则默认是trunk这意味着它不匹配在releasesor下发生的任何签入features,但是我不确定我的选项是什么。

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

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

编辑:

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

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

不幸的是,这不起作用。

看来我正在尝试做的是这里建议的内容,这让我认为这还不可能。

4

1 回答 1

0

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

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

于 2015-01-14T18:19:37.037 回答