【问题标题】:Is it possible to configure TeamCity to run personal builds on certain agents?是否可以将 TeamCity 配置为在某些代理上运行个人构建?
【发布时间】:2013-01-21 14:02:12
【问题描述】:

我们有一个特殊的构建配置,它需要运行大量的个人构建而不会有长时间的延迟。是否可以将特定代理专门用于运行个人构建?例如,如果我们有 5 个代理,是否有可能让所有 5 个都能够运行个人构建,但其中只有 3 个被 VCS 触发器触发?我能看到的唯一方法是创建 2 个代理池。这种方法的问题是您必须为每个池指定特定项目,这将涉及复制构建配置。

目前,个人构建在构建队列中配置为具有更高的优先级,但这无助于防止所有代理运行(缓慢)集成测试时出现延迟。理想情况下,这些集成测试将排队等待能够运行它们的 3 个构建代理之一空闲。有许多解决方法可以帮助减少影响,最好知道是否真的可以将代理专用于远程构建。

截至 2013 年 1 月,我们正在运行最新版本的 TeamCity,即 7.1.3。

【问题讨论】:

  • 您最初的问题是什么?您正在询问特定的解决方案,但最好了解您的实际问题。据我了解,您的代理数量有限(由于许可证?)并且您的缓慢集成测试阻碍了开发人员的个人构建,对吗?
  • 是的 - 问题正是您所描述的。由于代理执行长时间运行的配置,个人构建排队。在运行 2015 年 4 月的最新版本 (v9.0.3) 时,我们现在仍然遇到同样的问题。
  • 那么如何颠倒您的问题,并尝试在特定代理上运行缓慢的集成测试,并将其余部分留给个人构建?
  • 如果您将集成测试限制在特定代理,它将无法在任何其他代理上运行该配置的个人构建。
  • 我没听懂。如果您将集成测试限制在特定代理,您将能够在其他机器上运行相同的配置构建。除非您将测试设置为一次只能运行 1 个实例。

标签: teamcity teamcity-7.1


【解决方案1】:

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

此外,如果您使用构建配置模板,您建议的带有代理池的解决方案看起来还不错。

【讨论】:

  • 这不能回答问题。这允许某些构建配置不能在某些代理上运行,但与个人构建无关。这意味着使其工作的唯一方法是复制每个构建配置,这并不是真正的解决方案。我不想限制哪些构建配置可以在代理上运行。
  • 这将 构建配置 限制为某些代理,这在代理->兼容配置选项卡中直接受支持。但是,相同的构建配置可以以多种不同的方式运行,包括作为个人构建。我们希望将这些场景限制为某些代理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2012-07-11
  • 2017-08-07
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
相关资源
最近更新 更多