Continuous integration 当另一个生成正在运行时,排队而不是运行TeamCity生成

Continuous integration 当另一个生成正在运行时,排队而不是运行TeamCity生成,continuous-integration,teamcity,teamcity-7.1,Continuous Integration,Teamcity,Teamcity 7.1,我们繁忙的企业服务器在30个代理上运行550个活动构建配置。我们需要一种方法来防止某些构建在其他构建运行时运行。我已经了解了人工制品的依赖性,但这并不能解决我们的问题,因为构建并不相互依赖,它们只是共享一些资源,如服务器端口号和数据库连接。一些构建配置在同时运行时会相互冲突,我们需要通过在许多其他构建中的一个正在运行时对构建进行排队(而不是运行它)来防止这种情况 我们已经使用了一些愚蠢的技巧,比如将构建限制到特定的代理,等等。。。我正在考虑添加第一个构建步骤,检查db表中的标志或其他内容,但这将

我们繁忙的企业服务器在30个代理上运行550个活动构建配置。我们需要一种方法来防止某些构建在其他构建运行时运行。我已经了解了人工制品的依赖性,但这并不能解决我们的问题,因为构建并不相互依赖,它们只是共享一些资源,如服务器端口号和数据库连接。一些构建配置在同时运行时会相互冲突,我们需要通过在许多其他构建中的一个正在运行时对构建进行排队(而不是运行它)来防止这种情况

我们已经使用了一些愚蠢的技巧,比如将构建限制到特定的代理,等等。。。我正在考虑添加第一个构建步骤,检查db表中的标志或其他内容,但这将添加大量失败的构建,而我们真正需要的是正确的构建排队


我错过什么了吗?TeamCity中是否已经存在此功能?

我非常尊重550个配置和30个代理

我认为您已经找到了解决方案:

  • 每个代理有一个环境
  • 为特定代理分配配置

  • 我可以想象这是多少工作。但是我认为它更干净,并且比同时运行多个配置的限制要快得多。

    看起来您所需要的是一种形式的限制。您已经可以访问EAP。

    因为您需要序列化的依赖项是实际构建的外部依赖项(听起来像某种部署步骤),所以我认为您应该有一个外部解决方案。您的构建是否能够自行暂停并在第三方资源上同步?也许您可以构建自己的队列解决方案(例如,一个小型web应用程序),适当的构建步骤会阻止它?这样,实际的构建步骤可以并行进行,并且只有需要序列化的部分才被序列化。