当我的TFS构建由特定于分支的签入触发时,为什么不将该分支设置为其源?

时间:2018-12-27 21:25:14

标签: tfs tfsbuild tfvc tfs2018

我的目标是创建一个TFS CI构建,该构建由在TFVC中托管的项目的两个特定分支上的签入触发。当我手动对构建进行排队并在队列提示的“ Shelveset name”字段中键入特定分支时,该构建将按预期工作。但是,当我从一个特定分支检入更改时,该构建尝试将两个分支的父文件夹用作其默认源,从而导致无论我在何处使用$(Build.SourceBranchName)变量,整个构建定义中的文件路径都不正确。 / p>

我的文件夹结构如下:

- $/MyRepo
|
| -Integration Suite
  |
  | -CurrentVersion
  |
  | -Dev

我使用路径过滤器打开了CI触发器,其中包含$/MyRepo/Integration Suite/CurrentVersion$/MyRepo/Integration Suite/Dev

在“获取源”任务中,我的存储库设置为$/MyRepo,我将这些服务器路径分别映射到CurrentVersionDev本地路径。

例如,我希望检查CurrentVersion分支下的更改会将构建源设置为$/MyRepo/Integration Suite/CurrentVersion,但将其设置为$/MyRepo/Integration Suite。这意味着我在$(Build.SourceBranchName)定义中构建的所有路径都具有Integration Suite,而在其中应该具有CurrentVersion

我做错什么了吗?还是不支持我想要的行为?

1 个答案:

答案 0 :(得分:1)

TFVC依靠工作空间映射来知道要下载什么。工作空间映射基本上可以随心所欲地包含不同团队项目中的多个TFVC存储库,单个存储库中的多个分支。结果,它无法理解如何动态更改工作空间映射以用于特定分支。

TFVC构建的可悲现实是每个分支都需要一个构建。这使得TFVC ... er ...不适用于许多常见的连续交付方案。