我的目标是创建一个TFS CI构建,该构建由在TFVC中托管的项目的两个特定分支上的签入触发。当我手动对构建进行排队并在队列提示的“ Shelveset name”字段中键入特定分支时,该构建将按预期工作。但是,当我从一个特定分支检入更改时,该构建尝试将两个分支的父文件夹用作其默认源,从而导致无论我在何处使用$(Build.SourceBranchName)
变量,整个构建定义中的文件路径都不正确。 / p>
我的文件夹结构如下:
- $/MyRepo
|
| -Integration Suite
|
| -CurrentVersion
|
| -Dev
我使用路径过滤器打开了CI触发器,其中包含$/MyRepo/Integration Suite/CurrentVersion
和$/MyRepo/Integration Suite/Dev
在“获取源”任务中,我的存储库设置为$/MyRepo
,我将这些服务器路径分别映射到CurrentVersion
和Dev
本地路径。
例如,我希望检查CurrentVersion
分支下的更改会将构建源设置为$/MyRepo/Integration Suite/CurrentVersion
,但将其设置为$/MyRepo/Integration Suite
。这意味着我在$(Build.SourceBranchName)
定义中构建的所有路径都具有Integration Suite
,而在其中应该具有CurrentVersion
。
我做错什么了吗?还是不支持我想要的行为?
答案 0 :(得分:1)
TFVC依靠工作空间映射来知道要下载什么。工作空间映射基本上可以随心所欲地包含不同团队项目中的多个TFVC存储库,单个存储库中的多个分支。结果,它无法理解如何动态更改工作空间映射以用于特定分支。
TFVC构建的可悲现实是每个分支都需要一个构建。这使得TFVC ... er ...不适用于许多常见的连续交付方案。