在TFS 2015自动构建中使用分支名称

时间:2017-05-19 15:21:42

标签: tfs tfsbuild

我的TFS回购具有以下结构:

Project
 - Dev
    - 1.0.0_Branch1
    - 1.1.0_Branch2
    - N.0.0_BranchN

分支是TFS中的实际分支。

我在TFS服务器上为此项目设置了自动CI构建。我遇到的问题是我需要TFS中的构建名称来使用分支的名称。

我已经尝试过这里列出的一些构建定义变量,例如:$(SourceBranchName)和$(Build.SourceBranchName),但所有这些变量都是使用Project的名称(本例中为Project)。

我希望将构建命名为1.0.0_Branch1.1,最后一个数字是修订版。

我想这样做的原因是,当我在构建结束时生成Nuget包时,可以使用正在构建的分支的版本对它们进行版本控制。目前,他们使用日期进行版本控制,这意味着最高版本只是最近构建的版本,实际情况可能并非如此。我不想每次都手动设置版本。

正在构建的所有程序集都已正确版本化,以匹配它们所在的分支。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:3)

对于构建定义,可以在构建号格式中使用$(SourceBranchName)

usage of SourceBranchName 示例构建: build performed with SourceBranchName

环境变量为BUILD_SOURCEBRANCHNAME,因此它将在msbuild中以$(BUILD_SOURCEBRANCHNAME)的形式提供。

可用变量列表位于:https://www.visualstudio.com/en-us/docs/build/define/variables#predefined-variables

答案 1 :(得分:1)

这可能是由您在构建定义中的“存储库”选项卡下配置的“映射”设置引起的。使用TFVC存储库构建时,BUILD_SOURCEBRANCHNAME变量将填充工作空间的根服务器路径中的最后一个路径段。所以我想知道你的构建定义中的映射服务器路径是“$ / Project”而不是“$ / Project / Dev / 1.0.0_Branch1”。

  

TFVC repo branch:根服务器路径中的最后一个路径段   工作区。例如,在$ / teamproject / main中,此值为main。

有关详细信息,请参阅此链接:Predefined Variables