当我的 TFS 构建由特定于分支的签入触发时,为什么它不将该分支设置为其源?
When my TFS build is triggered by a branch-specific check-in, why doesn't it set that branch as its source?
我的目标是创建一个 TFS CI 构建,该构建由在 TFVC 中托管的项目的两个特定分支上的签入触发。当我手动对构建进行排队并在队列提示的 "Shelveset name" 字段中键入特定分支时,构建按预期工作。但是,当我签入一个特定分支的更改时,构建会尝试使用两个分支的父文件夹作为其默认源,从而导致在整个构建定义中使用 $(Build.SourceBranchName)
变量的文件路径不正确。
我的文件夹结构如下:
- $/MyRepo
|
| -Integration Suite
|
| -CurrentVersion
|
| -Dev
我打开了 CI 触发器,路径过滤器包括 $/MyRepo/Integration Suite/CurrentVersion
和 $/MyRepo/Integration Suite/Dev
在 "Get Sources" 任务中,我的存储库设置为 $/MyRepo
,我将这些服务器路径分别映射到 CurrentVersion
和 Dev
本地路径。
例如,我希望在 CurrentVersion
分支下检查更改会将构建源设置为 $/MyRepo/Integration Suite/CurrentVersion
,但它会设置为 $/MyRepo/Integration Suite
。这意味着我在定义中使用 $(Build.SourceBranchName)
构建的任何路径都具有 Integration Suite
而它们应该具有 CurrentVersion
.
我是不是做错了什么?还是我想要的行为不受支持?
TFVC 依靠工作区映射来了解要下载的内容。工作区映射可以包含跨不同团队项目的多个 TFVC 存储库,单个存储库中的多个分支,基本上,无论您想要什么。因此,它无法理解如何针对特定分支动态更改工作区映射。
TFVC 构建的可悲现实是您需要为每个分支构建一个。这使得 TFVC……呃……对于许多常见的持续交付场景来说不是很好。
我的目标是创建一个 TFS CI 构建,该构建由在 TFVC 中托管的项目的两个特定分支上的签入触发。当我手动对构建进行排队并在队列提示的 "Shelveset name" 字段中键入特定分支时,构建按预期工作。但是,当我签入一个特定分支的更改时,构建会尝试使用两个分支的父文件夹作为其默认源,从而导致在整个构建定义中使用 $(Build.SourceBranchName)
变量的文件路径不正确。
我的文件夹结构如下:
- $/MyRepo
|
| -Integration Suite
|
| -CurrentVersion
|
| -Dev
我打开了 CI 触发器,路径过滤器包括 $/MyRepo/Integration Suite/CurrentVersion
和 $/MyRepo/Integration Suite/Dev
在 "Get Sources" 任务中,我的存储库设置为 $/MyRepo
,我将这些服务器路径分别映射到 CurrentVersion
和 Dev
本地路径。
例如,我希望在 CurrentVersion
分支下检查更改会将构建源设置为 $/MyRepo/Integration Suite/CurrentVersion
,但它会设置为 $/MyRepo/Integration Suite
。这意味着我在定义中使用 $(Build.SourceBranchName)
构建的任何路径都具有 Integration Suite
而它们应该具有 CurrentVersion
.
我是不是做错了什么?还是我想要的行为不受支持?
TFVC 依靠工作区映射来了解要下载的内容。工作区映射可以包含跨不同团队项目的多个 TFVC 存储库,单个存储库中的多个分支,基本上,无论您想要什么。因此,它无法理解如何针对特定分支动态更改工作区映射。
TFVC 构建的可悲现实是您需要为每个分支构建一个。这使得 TFVC……呃……对于许多常见的持续交付场景来说不是很好。