【问题标题】:Queuing of TFS build against agents针对代理的 TFS 构建排队
【发布时间】:2013-07-05 11:17:45
【问题描述】:

我安装了一个 TFS 2010 构建服务,其中包含三个代理:数据库、生产和发布,每个代理都运行互斥的构建集。

不幸的是,当构建排队时,无论他们准备去哪个代理,它们似乎都以三人一组的形式排队。这意味着如果一次运行来自单个代理的三个以上构建,我们将失去我希望的并行性,因为它们将占用整个队列。

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

【问题讨论】:

  • “无论他们准备去哪个代理,他们似乎都以三人一组的方式排队。” 3人一组??你能详细解释一下吗?我没听懂。
  • 随着持续构建的触发,所有内容都会排队。由于存在三个代理,因此构建一次开始三个,但如果他们需要的代理正在使用中,他们会阻止等待代理。因此,例如,三个发布版本和一个生产版本运行。所有三个发布版本都开始,但后两个块等待发布代理完成。与此同时,生产代理无所事事地坐着等待。
  • 据我所知,这是您的问题 - 如果一次有 3 个数据库或 Prod 或 Release 构建排队,它应该并行发生(使用 PROD/Release 构建代理)而不是等待数据库构建代理是免费的???我的问题:1.您现在是否将构建映射到构建代理,如果是,如何(标签??)?
  • 更多的事实是,有一些可以使用的代理是空闲的,但是队列被在同一个代理上等待的构建占用了。我使用代理名称作为选择而不是乱用标签,这可能是问题吗?
  • 如果您直接选择构建代理,那么在队列中等待的构建是正常行为。所以使用构建控制器并将其用于排队。

标签: tfs msbuild build-agent


【解决方案1】:

使用 TFS 2010 默认构建定义,您无法选择构建代理,而只能选择构建控制器,除非您对其进行了自定义。理想情况下,您应该有一个构建控制器,它下面有多个构建代理。在构建定义中,您只需选择控制器名称,构建控制器将构建推送到此时免费的代理。您还可以使用 TAGS 确保构建仅在特定构建代理上运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2016-09-17
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    相关资源
    最近更新 更多