有没有可能在TeamCity中配置个人构建以在特定的代理上运行?

3
我们有一种特定的构建配置,需要运行很多个人构建而不会出现长时间的延迟。是否可以专门分配代理程序只运行个人构建?例如,如果我们有5个代理程序,是否可以让所有5个代理程序都能够运行个人构建,但只有其中3个代理程序会被VCS触发器触发?我唯一能想到的方法是创建2个代理程序池。这种方法的问题在于您必须为每个池指定特定的项目,这将涉及复制构建配置。
目前,个人构建已配置为在构建队列中具有更高的优先级,但当所有代理程序都运行(慢速)集成测试时,这并不能帮助防止延迟。理想情况下,这些集成测试应排队等待其中一个能够运行它们的3个构建代理程序空闲。有很多解决方法可以帮助减少影响,但了解是否真的可以将代理程序专门用于远程构建可能会很有帮助。
我们正在运行截至2013年1月的最新版TeamCity 7.1.3。

你最初的问题是什么?你询问特定的解决方案,但了解你的真正问题会更有益。据我所知,你的问题是由于许可证限制,你拥有有限数量的代理人,并且你缓慢的集成测试正在阻塞开发人员的个人构建,对吗? - Krzysztof Wolny
是的 - 问题正如您所描述的那样。由于代理执行长时间配置,个人构建被排队等待。即使在运行最新版本2015年4月版(v9.0.3)时,我们仍然存在相同的问题。 - infojolt
那么,反过来思考一下,尝试在特定的代理上运行缓慢的集成测试,将其余部分留给个人构建,这样怎么样? - Krzysztof Wolny
如果您将集成测试限制在特定代理上,那么它将无法在其他任何代理上运行该配置的个人构建。 - infojolt
我没明白。如果你将集成测试限制在特定的代理上,那么你就可以在其他机器上运行相同的配置构建。除非你设置测试只能同时运行1个实例。 - Krzysztof Wolny
我们在TC 9.1.3中遇到了同样的问题。我们希望只允许特定代理运行个人构建。似乎没有办法在不重复构建配置的情况下实现这一点。理想情况下,我们需要在代理“兼容配置”选项卡上添加一个新的复选框选项,即“不允许个人构建”。 - lesscode
1个回答

0

您可以通过指定代理要求来实现此目标。选择一个参数,以区分您希望由VCS自动触发的3个代理与其他2个代理。在除了您想在所有5个代理上运行的配置之外的每个构建配置中将其添加为代理要求。这样,您将限制集成测试仅在3个代理上运行,并释放剩余的2个代理仅运行需要大量个人构建的配置。

此外,如果您使用构建配置模板,则代理池的建议解决方案可能不会太糟糕。


1
这并没有回答问题。这允许某些构建配置不在特定代理上运行,但与个人构建无关。这意味着使其工作的唯一方法是复制每个构建配置,这并不是真正的解决方案。我不想限制哪些构建配置可以在代理上运行。 - infojolt
这是将_build configurations_限制为特定代理的方式,直接在代理->兼容配置选项卡中支持。然而,同一_build configuration_可以以许多不同的方式运行,包括作为个人构建。我们希望将这些情况限制在特定的代理上。 - lesscode

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