TFS Build 2013 放置位置

TFS Build 2013 drop location

我有 6 个构建服务器和多个构建定义。我希望放置位置为 C:\Builds\BuildDefinition.Name\BuildNumber。如果我将放置位置设置为 \\localhost\Builds,文件将放置在正确的位置,但我无法从 Visual Studio 访问放置位置(我想它正在查看我本地计算机上的 \\localhost 然后).

构建定义不是由一个特定的构建服务器构建的,您通常会选择一个不忙的服务器,所以我不能将放置位置硬编码为 \\BuildServer1\Builds。

如何将放置位置设置为 \\SelectedBuildServer\Builds\,以便它根据我在哪个构建服务器上排队生成而改变?

我不想为 drops 设置网络位置,因为 drops 的文件大小 >1gb,所以需要相当长的时间。我希望掉落在构建它们的本地构建服务器上。

解决方案:

BuildDetail.DropLocation = "\"
+ BuildDetail.BuildController.Name 
+ "\Builds\" 
+ BuildDetail.BuildDefinition.Name 
+ "\" + BuildDetail.BuildNumber + "\"

算出:\\BuildServerNetworkLocation\Builds\BuildDefinitionName\BuildNumber

我的控制器名称与我的构建服务器网络位置相同。

你将不得不编辑构建模板 (.xaml),除非你想走 pre/post-build powershell 脚本路线(虽然不知道这是否可行) .

一个好地方(假设您使用的是默认的 TfvcTemplate.12)就在 "Associate the changesets that occurred since the last good build" 步骤之后。

您需要添加一个步骤以使用 GetBuildAgent 获取 buildAgent 实例 and/or GetBuildDetail 获取 buildDetail - 老实说,我不记得哪个包含构建服务器 ID,尽管您可以将其解析为...

buildAgent.GetExpandedBuildDirectory(buildDetail.BuildDefinition)

...如果你绝望了。之后你应该能够将值附加到...

buildDetail.DropLocation 

...属性 我认为这会为您做到。

我刚刚离开构建服务器,但如果你遇到困难,我会看看我能找到什么。

编辑:抱歉,刚刚看到关于构建名称的内容也被需要。我相信您应该能够从与构建服务器 ID 相同的对象中获取它。