我有一个TeamCity项目,其中包含几种类型的构建配置:
目标是经常构建应用程序包,以便我们立即知道单元测试何时中断,根据需要构建角色包,以及在有新角色包时尽可能频繁地运行回归测试去测试。但是,由于回归测试需要很长时间,并且一次只能运行一个回归(它独占测试服务器集),我们总是希望它能够获取最新的可用包。开始跑步例如:
3:00 code checked in 3:01 build app package (A1) 3:02 app package A1 finishes 3:02 build role package (R1) 3:03 role package R1 finishes 3:04 regression starts for R1 3:10 code checked in 3:11 build app package (A2) 3:12 app package A2 finishes 3:12 build role package (R2) 3:13 role package R2 finishes 3:20 code checked in 3:21 build app package (A3) 3:22 app package A3 finishes 3:22 build role package (R3) 3:23 role package R3 finishes 3:30 regression finishes for R1 ** regression never runs for R2 ** 3:30 regression starts for R3
到目前为止,我已经使用工件依赖项和构建触发器来实现它:
当只重建一个角色时,这非常有效。但是,当多个角色同时更改时,一旦第一个角色重建,回归测试就会开始运行,然后在该测试完成之前,其他角色不会被接收。我希望在重建 last 更改角色时开始运行回归。 (注意:角色比代理更多,回归运行在与包构建不同的代理上。)
快照依赖项听起来像我需要的工具......但我的理解是它们强制所有相关配置从相同的VCS版本运行,并且我想避免在其代码未更改时强制重建包。如果今天唯一的变化是在只影响角色R的包中,则不应重建角色S / T / U,也不应重建它们的依赖关系。这可能吗?
编辑:我正在运行TeamCity 7.1.1。
答案 0 :(得分:1)
我认为使用Do not run new build if there is a suitable one
和Only use successful builds from suitable ones
的快照依赖项以及设置为build from the same chain
的工件依赖项将实现您想要的效果。这个配置应该意味着它看到没有必要重建,因为没有任何改变,请注意它仍然触发构建,但它所做的就是评估没有任何事情要做,所以继续使用构建链。
注意:您没有提到您正在运行的版本,但我认为这在6.5版本中无法正常工作,但在7.1版本中可以正常工作(更优化)。