有没有办法识别在 Azure Devops CI 构建中签入的 TFS 分支?

Is there a way to identify the TFS branch that was checked into in an Azure Devops CI build?

我有一个大约有 4 个分支的 TFVC 项目。我需要以某种方式设置构建和发布管道,为每个分支构建一个工件。因为我最终需要在别处重复这个过程,所以我想避免为每个分支复制相同的构建管道。当管道启动时,我可以使用用户定义的变量配置一个单一的构建管道,它可以在我需要的任何分支上工作,但现在我需要在构建上启用持续集成。

My current build pipeline trigger configuration

我需要它来工作,以便每当有人签入其中一个 TFVC 分支时,构建就会启动,并且可以正确识别更新了哪个分支。根据我的发现,这意味着我最初关于用户定义变量的想法将不再适用。是否有一个预定义的管道变量,我可以使用它来判断签入了哪个分支,以便该分支是签出和构建的分支?如果没有,是否有其他方法可以在一个管道中执行此操作,或者我最终是否需要为每个分支复制此构建管道?

抱歉,在 Azure DevOps/TFS 构建管道中不可用 TFVC。

对于 CI 触发器,您可以 select 要包含和排除的版本控制路径。在大多数情况下,您应该确保这些过滤器与 Repository 选项卡上的 TFVC 映射一致。无法根据持续集成触发构建管道的分支动态设置工作区映射路径。

这个问题你也可以看看大牛的解释:

TFVC relies on workspace mappings to know what to download. The workspace mappings can encompass multiple TFVC repos across different team projects, multiple branches within a single repository......

As a result, there's no way for it to understand how to dynamically change workspace mappings to be for a specific branch.

结论:您可能需要为每个分支构建一个,复制管道只需更改触发器和工作区映射中的路径过滤器。