【发布时间】:2013-07-05 11:17:45
【问题描述】:
我安装了一个 TFS 2010 构建服务,其中包含三个代理:数据库、生产和发布,每个代理都运行互斥的构建集。
不幸的是,当构建排队时,无论他们准备去哪个代理,它们似乎都以三人一组的形式排队。这意味着如果一次运行来自单个代理的三个以上构建,我们将失去我希望的并行性,因为它们将占用整个队列。
有没有办法确保构建在其自己的代理空闲时排队,以便我们可以拥有尽可能多的并行构建?
【问题讨论】:
-
“无论他们准备去哪个代理,他们似乎都以三人一组的方式排队。” 3人一组??你能详细解释一下吗?我没听懂。
-
随着持续构建的触发,所有内容都会排队。由于存在三个代理,因此构建一次开始三个,但如果他们需要的代理正在使用中,他们会阻止等待代理。因此,例如,三个发布版本和一个生产版本运行。所有三个发布版本都开始,但后两个块等待发布代理完成。与此同时,生产代理无所事事地坐着等待。
-
据我所知,这是您的问题 - 如果一次有 3 个数据库或 Prod 或 Release 构建排队,它应该并行发生(使用 PROD/Release 构建代理)而不是等待数据库构建代理是免费的???我的问题:1.您现在是否将构建映射到构建代理,如果是,如何(标签??)?
-
更多的事实是,有一些可以使用的代理是空闲的,但是队列被在同一个代理上等待的构建占用了。我使用代理名称作为选择而不是乱用标签,这可能是问题吗?
-
如果您直接选择构建代理,那么在队列中等待的构建是正常行为。所以使用构建控制器并将其用于排队。
标签: tfs msbuild build-agent