TFS 2017 - 构建代理优先级和顺序

9
我有一个拥有10个代理的池子。我发现通常只有其中一部分被使用,其他的几乎从未被使用过。
我想知道是否有一种方法告诉TFS使用所有的代理?例如,基于顺序让TFS抓取它们。首先使用编号1,然后是2、3。使用完代理后,将其放在队列的末尾。这样,在再次使用编号1之前,TFS将使用所有数字。
如果能实现这样的逻辑,将最大限度地利用我们拥有的所有代理,那将非常好。

2
为什么这很重要呢?我没有看到需要解决的问题。这些被使用更多的代理并不会磨损,它们不像轮胎一样需要旋转。如果你有比正在使用的代理更多的可用代理,那就把其中一些去掉。 - Daniel Mann
1
这很重要,因为我有10个代理,我想平等地使用它们。我们的构建和部署过程会创建许多临时存档文件,需要定期删除。然而,由于某种原因,TFS没有处理它(我敢打赌这是保留系统中的一个错误)。因此,如果我们继续使用一个代理比其他代理更多,那么在该特定代理中就会用尽空间,这不好,因为我还有其他未被使用的代理。 - Janissetti
2
@DanielMann,代理1的空间不足。所有构建都失败了。是啊,为什么这很重要?我也不知道。 - 4c74356b41
2个回答

8
正如Daniel所说,它们不需要旋转。如果其中一些不需要,请将其删除。
但是,如果您想每次使用特定的代理,请在构建定义中设置“需求(Demands)”。 在构建定义下的“常规(General)”中,添加要求“代理名称(Agent.Name)”,并将其设置为构建代理的名称。或者添加自定义需求(例如,使用“用户功能(USER CAPABILITIES)”)来标识特定代理。这将确保仅由此代理提供服务。
因此,您可以创建不同的构建定义以使用每个代理。
有关详细信息,请参阅此文章:Build vNext, distributing load to different agents
但是,目前我们无法实现这一点。这里有一个用户请求的功能。您可以去投票,以期望将来实现它。

谢谢回复,安迪。我考虑过使用“需求”功能,但我不想为拉取请求保存例如3个代理,为构建保存3个代理,为发布保存3个代理。有时我会需要更多的代理来处理某些任务,这取决于日期和时间。我希望能够解决上述保留问题。感谢您的回复和建议 :-) - Janissetti
@WagnerCJ 很抱歉,目前还没有旋转代理的功能,唯一的方法是指定对代理的需求。不过,Michel提交了一个用户建议以建议该功能,您可以前往投票。请查看更新后的答案获取链接。 - Andy Li-MSFT
感谢您告诉我它现在不可用。还要感谢您分享“用户反馈”超链接。我已经添加了我的想法并投票了!很高兴知道我并不孤独;-) - Janissetti
@WagnerCJ 是的,我们希望这个功能能够尽快实现。如果这有所帮助,您可以接受它作为答案,这对于阅读本主题的其他社区成员也会有益处。 - Andy Li-MSFT
在VSTS中:选择一个构建定义 -> 编辑 -> 选项 -> 需求 - 添加 "Agent.Name" 等于 "MYAGENT" - SushiGuy

4
我对这个问题也很疑惑。清理过程似乎有时会留下遗物。由于我们运行的建置数量很多,即使我们编写了自己的清理工具,服务器最终也很容易空间不足。
看来 TFS 有一种“疯狂”的方法:解密 VSTS Build 代理选择

在与 Microsoft 的一些人讨论后,发现选择例程的工作方式如下 - 当新建构建排队时:

  1. 选择所有符合指定需求的构建代理
  2. 按代理名称的聚集索引对结果进行排序

翻译:建置代理按它们向 VSTS 注册的顺序进行选择。我想这是一种简单的方法,但并非我预期的。


太棒了!非常有用的文章!感谢分享!不幸的是,它并没有帮助我(帮助我理解!)解决我的问题。由于VSTS的工作方式,我无法更改它用于选择下一个代理的逻辑。我不会更改它们注册的顺序,因为这对我没有帮助。我已经在上面列出的用户声音中发表了评论和投票。也许你也可以这样做。很高兴看到我在这个请求中不是孤单的。 - Janissetti
太好了!这对我有用!我能够通过卸载再安装代理程序来管理代理池之间的优先级。屏幕上的顺序保持不变,但现在TFS会按照我想要的优先级进行选择。因此,我在4个服务器上拥有4个不同的代理程序,现在我的容量更加均衡。谢谢! - tgarcia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接