Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build 是否可以在特定代理上运行TFS生成活动?_Build_Tfs_Tfsbuild_Build Agent - Fatal编程技术网

Build 是否可以在特定代理上运行TFS生成活动?

Build 是否可以在特定代理上运行TFS生成活动?,build,tfs,tfsbuild,build-agent,Build,Tfs,Tfsbuild,Build Agent,我们正在使用TFS 2010,我们需要运行单独的EXE来执行旧的VB6构建脚本。我们有3个构建代理分布在2台机器上,但只有一台机器上有VB6开发环境(以及旧的构建脚本),因此只有一个代理可以完成这项工作。我知道如何使用构建模板文件中的构建活动执行此操作,但由于我们在两台不同的计算机上有3个构建代理,我的问题是如何确保此活动仅在包含VB6开发环境的一个构建代理上运行 我意识到这会造成瓶颈,但这只是暂时的。如果我可以在不为自定义活动创建自定义DLL的情况下执行此操作,那将非常理想。此外,我明白,通过

我们正在使用TFS 2010,我们需要运行单独的EXE来执行旧的VB6构建脚本。我们有3个构建代理分布在2台机器上,但只有一台机器上有VB6开发环境(以及旧的构建脚本),因此只有一个代理可以完成这项工作。我知道如何使用构建模板文件中的构建活动执行此操作,但由于我们在两台不同的计算机上有3个构建代理,我的问题是如何确保此活动仅在包含VB6开发环境的一个构建代理上运行

我意识到这会造成瓶颈,但这只是暂时的。如果我可以在不为自定义活动创建自定义DLL的情况下执行此操作,那将非常理想。此外,我明白,通过标记,我可以为这项工作创建一个不同的构建定义,但同样,这并不理想。。。我希望有一个构建工作流在一个代理上运行此功能,但随后的其余活动将在各自的构建代理上继续


编辑:上述所有内容,如果可以将2个生成定义链接在一起(VB6生成定义运行,然后是“常规”生成定义),如果可能,这将是一个可接受的解决方案。

您当然可以使用现成的RunWorkflow和WaitForWorkflow活动将两个构建定义链接在一起(如果您查看LabDefaultTemplate,它会这样做)


更优雅的解决方案是在一个工作流中使用AgentScope活动来分离工作流中需要在不同特定代理上运行的部分。如果查看DefaultTemplate,它的大部分被包装在单个AgentScope活动(标记为Run On Agent)中,但是您可以将其拆分为两个AgentScope活动,这些活动按顺序调用(如果可能,也可以并行调用).

您应该能够使用不同的标记设置生成定义,并使用生成代理上的筛选器自动选择适当的代理。(我之所以说“应该”,是因为我已经尝试了2年了,当时我无法让它在单个构建服务器设置上可靠地工作,所以我不能给你更多的东西来继续)你的第二个解决方案是当我看到Run on Agent活动时,我认为我可以在DefaultTemplate中更改的。我添加了我自己的AgentScope,但是我没有看到任何关于如何将其限制为标记为build agent的选项。我遗漏了什么吗?您需要设置AgentScope活动的ReservationSpec属性。DefaultTemplate中的一个将其设置为生成定义(AgentSettings.GetAgentReservationSpec())中作为参数输入的值。一旦安装了“VB6”生成代理,我将尝试一下,并让您知道。