【问题标题】:TeamCity Snapshot Dependencies without triggering rebuildTeamCity 快照依赖项而不触发重建
【发布时间】:2016-01-26 23:21:13
【问题描述】:

TLDR:如何安排它以使快照依赖项不会触发新构建?

要运行我的测试进程,它们需要在“测试”环境中运行。创建这样的环境很简单,但很漫长;完成构建测试环境可能需要 45 分钟到一个小时。此外,环境的名称和其他此类变量在环境构建完成之前是不固定的。

在我的 TeamCity 构建定义中,我可以将“如果缺少构建环境”作为构建步骤。但是,这意味着当天的第一个测试需要 45 分钟才能运行。

相反,我们创建了一个单独的构建,它计划每天早上运行,构建当天的测试环境。然后,我们的测试构建对该构建具有快照依赖关系,以便使用该构建的参数来确定环境信息,并且一切都按预期工作,除了一个问题:

运行新测试时,似乎经常会触发测试环境创建的重建。

我们不希望这种情况发生;测试环境的创建当天“完成”,直到明天才需要再次运行。我们怎样才能做到这一点?

【问题讨论】:

  • 你需要快照依赖吗?这样做的唯一原因是触发依赖构建,但这是您要避免的。

标签: testing continuous-integration teamcity


【解决方案1】:
  1. 您已经有了基于时间的触发器 => 每天早上都会准备好环境
  2. 在您的 产品 TC 配置中创建快照依赖项(不是在准备 测试环境 的配置中)并勾选“如果有一个合适的'
  3. 您用于设置测试环境的配置不应有任何 VCS 根目录(或指向不会发生提交的源代码控制的某个平静位置)。要物理设置您的环境,您不需要任何源代码映射等 - 例如,您可以通过自己的 NuGet 包使用所需的一切。

注意:在此工作流程中,您的实际项目的每个构建都将获取设置测试环境的配置构建(因此它实际上在构建队列中)但是 当轮到它时,它将比较自上次构建以来的更改 => 未找到 VCS 上的提交(它指向 SourceControl 中由于步骤 3 的平静位置),因此将在 中跳过构建

【讨论】:

  • 我们遇到了一些相同的问题,并且设置“如果有合适的版本就不要运行新版本”似乎并不总是有效。我们看到频繁的重新构建,其中列出了由后续构建触发的“无更改”。
  • 真的经常吗?这些重建可能由 TC 预测它可能影响构建输出的事件触发(例如 TC 配置的更改),设置“测试环境”的 TC 配置也不应该有任何工件/快照依赖项。我们可以正常工作,将 80 个跨 5 个依赖层的 TC 项目组装起来,没有这样的问题(9.1.4 build 37293)。您所描述的似乎是 TC 中的错误(值得报告错误)或您的工作流程有问题。在触发构建但不应该触发构建的情况下,您是否看到任何有趣的事情?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
相关资源
最近更新 更多