【问题标题】:How to queue build on the TFS build server (build controller) with shortest queue? How to configure load balancing on build controllers?如何在具有最短队列的 TFS 构建服务器(构建控制器)上排队构建?如何在构建控制器上配置负载平衡?
【发布时间】:2011-11-28 23:06:14
【问题描述】:

我们有两个 TFS 构建服务器(构建控制器)可用于我们的应用程序。构建按照构建定义中的配置触发。每个构建都通过“构建默认值”页面配置到特定的构建控制器。

假设我们有一个封闭的签入构建。构建时间为 30 分钟,每小时进行 3 次签入。通常这 3 个门控签入构建在构建控制器 1 上触发,其他构建控制器 2 处于空闲状态。

如果构建控制器 1 正在使用中,如何在构建控制器 2 上触发门控签入构建?

是否可以在具有最短构建队列的构建服务器上排队构建? 如何在构建控制器上配置负载均衡?

编辑: 我找到了 TFS2008 here 的可能解决方案。我正在寻找适用于 TFS2010 的解决方案

【问题讨论】:

    标签: tfs continuous-integration tfsbuild


    【解决方案1】:

    我认为这是不可能的。控制器可以平衡一个构建,哪些代理可用并且匹配构建的代理模式(如构建定义中所定义)。除非您有大量构建负载,否则我会坚持每个集合使用一个控制器和更多代理。 与代理(负责编译、测试和部署)相比,控制器所做的工作非常少。

    对于您的情况,我会尝试以下方法:

    控制器

    • 门控代理 1(在 \\sv-BuildAgent1 上)
    • 门控代理 2(在 \\sv-BuildAgent2 上)
    • QA 代理...(在 \\sv-BuildAgent3 上)
    • 其他代理...(在 \\wherever 上)
    • ...等等...

    现在每个 Gated Build 的定义,您将 Build Agent 设置为“Gated Agent *”(它位于 3 中的 Process 选项卡下。高级 -> 代理设置 -> 名称过滤器。)。这将选择任何以“Gated Agent”开头的代理。您可以轻松地将其扩展到您需要的任意数量的机器上的任意数量的代理。

    编辑:

    您也可以将标签放在构建代理上以获得类似的结果。这可能更容易配置。您在构建代理的属性中定义标签并配置定义以在与名称过滤器相同的部分中使用它们(上图)。

    【讨论】:

    • 我只能在“构建默认值”页面上看到构建控制器。无法将 Build Agent 设置为“Gated Agent *”。 TFS2008 的负载均衡器是 here
    • 您需要编辑构建定义。它位于 3. 高级 -> 代理设置 -> 名称过滤器中的“进程”选项卡下。 (更新答案)
    • +1。这是一个很好的解决方案。但是我们每个控制器只有一个代理 :( 我们的构建是并行构建的(高 CPU 负载),所以对我们来说最好的解决方案是使用两个单独的服务器和一些负载均衡器。
    • 我会删除一个控制器,但保留它的代理。 - 见:msdn.microsoft.com/en-us/library/dd793166.aspx
    • 我再次更新了我的答案,添加了关于为什么一个项目不需要 2 个控制器的更多解释。
    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2016-05-23
    • 2013-11-28
    • 2016-03-13
    相关资源
    最近更新 更多