我在一个代理程序池下的两个服务器中配置了10个构建代理程序。无论何时使用前四个代理,请求的构建都在前四个代理的队列中,但是还有另外六个代理可用且构建不排队到这些代理。
这已经快六个月了,代理商10甚至没有处理过一次。其他5至10种药剂几乎不使用。为什么会出现这种现象?我们如何通过公平地使用所有代理来处理这个问题?
答案 0 :(得分:0)
TFS将在运行构建时自动选择池中的可用构建代理。它更像是条件随机选择。它现在无法确定构建代理的优先级。还有一个相关的uservoice如下:
TFS 2015 build vNext agent prioritization
作为一种解决方法,您可以在vNext版本中指定构建代理。
您可以为特定的构建代理添加用户功能。然后在构建定义中,您只需要将该功能作为需求(常规选项卡)。
答案 1 :(得分:0)
似乎构建首先在“最老的”代理上排队。因此,如果代理10是您创建的最后一个代理,则只有在前9个代理正在使用时才会使用它,假设它们都具有相同的功能。
它似乎不是随机选择的代理,而是基于代理的创建顺序。具有讽刺意味的是,如果您添加一个新的强大的构建服务器,那么这些代理将位于队列的底部。
PatrickLu-MSFT's answer中的用户语音建议是允许代理优先。
此时的解决方法似乎是删除所有(或某些)代理,并按照您希望它们使用的顺序重新创建它们。这仍然意味着最后一个代理将被减少使用,但至少你可以稍微影响代理的分布。
我们也遇到了这个问题。我们有六个构建服务器,每个服务器有三个代理,构建不公平分配。我也不想根据定义分配代理,但我想我们将不得不用它来解决问题。