基于代理的TFS构建排队

基于代理的TFS构建排队,tfs,msbuild,build-agent,Tfs,Msbuild,Build Agent,我有一个TFS2010构建服务,它安装了三个代理:数据库、生产和发布,每个代理上都运行互斥的构建集 不幸的是,当构建排队时,它们似乎以三人一组的方式排队,而不管它们准备去哪个代理。这意味着,如果一个代理同时运行三个以上的构建,我们将失去我所希望的并行性,因为它们将占用整个队列 有没有办法确保生成在其自己的代理变为空闲时排队,以便我们可以有尽可能多的并行生成?使用TFS 2010默认生成定义,您不能选择生成代理,只能选择生成控制器,除非您已自定义它。理想情况下,您应该有一个构建控制器,它下面有多个

我有一个TFS2010构建服务,它安装了三个代理:数据库、生产和发布,每个代理上都运行互斥的构建集


不幸的是,当构建排队时,它们似乎以三人一组的方式排队,而不管它们准备去哪个代理。这意味着,如果一个代理同时运行三个以上的构建,我们将失去我所希望的并行性,因为它们将占用整个队列


有没有办法确保生成在其自己的代理变为空闲时排队,以便我们可以有尽可能多的并行生成?

使用TFS 2010默认生成定义,您不能选择生成代理,只能选择生成控制器,除非您已自定义它。理想情况下,您应该有一个构建控制器,它下面有多个构建代理。在构建定义中,您将只选择控制器名称,而构建控制器将构建推送到此时可用的代理。您还可以使用标记来确保生成仅在特定的生成代理上运行。

“它们似乎以三人一组的方式排队,而不管它们准备进入哪个代理。”三人一组??你能详细解释一下吗?我没有完全理解。当连续构建被触发时,所有的东西都会排队。因为有三个代理,所以构建一次启动三个,但是如果他们需要的代理正在使用中,他们会阻止等待代理。例如,三个发布版本和一个生产版本运行。所有三个发布版本都将启动,但第二个版本块将等待发布代理完成。与此同时,生产代理正在无所事事地等待。据我所知,这是您的问题-如果一次有3个数据库、产品或发布版本排队,那么它应该并行进行(使用产品/发布版本代理),而不是等待数据库构建代理空闲???我的问题:1。您现在是否将构建映射到构建代理,如果是,如何映射(标记)?更重要的是,有一些可以使用的代理处于空闲状态,但队列被等待在同一代理上的构建占用。我使用代理名称作为选择,而不是乱搞标记,这可能是问题所在吗?如果您直接选择构建代理,那么队列中等待的构建是正常行为。因此,使用构建控制器并将其用于排队。