Continuous integration 某些构建触发器在TeamCity中运行不同的构建脚本

Continuous integration 某些构建触发器在TeamCity中运行不同的构建脚本,continuous-integration,teamcity,automated-tests,Continuous Integration,Teamcity,Automated Tests,是否仍然需要运行某些构建触发器,从而运行不同的构建步骤?或者我必须在TeamCity上分离出不同的项目才能做到这一点 例如,在每次提交时,我想运行一个较小的测试套件,然后每晚它应该运行一个完整的回归测试套件。我不完全确定如何设置这一点您必须添加两种不同的构建配置,然后根据夜间配置的时间表指定触发器,并为“较小的测试套件”指定VCS触发器当然,您可以在一个配置中在构建脚本中添加时间检查,并根据条件执行操作,但这不是解决此任务的好方法。在这种情况下,您需要执行两个不同的构建。这是一个非常常见的模式,

是否仍然需要运行某些构建触发器,从而运行不同的构建步骤?或者我必须在TeamCity上分离出不同的项目才能做到这一点


例如,在每次提交时,我想运行一个较小的测试套件,然后每晚它应该运行一个完整的回归测试套件。我不完全确定如何设置这一点

您必须添加两种不同的构建配置,然后根据夜间配置的时间表指定触发器,并为“较小的测试套件”指定VCS触发器
当然,您可以在一个配置中在构建脚本中添加时间检查,并根据条件执行操作,但这不是解决此任务的好方法。

在这种情况下,您需要执行两个不同的构建。这是一个非常常见的模式,我几乎为我参与过的每个项目都做过

我使用的模式是在TeamCity中设置两个不同的构建

首先是一个持续集成构建,它将构建解决方案并运行单元测试的子集,单元测试通过测试上的某种属性或标志进行过滤。对于MsTest和C#,这将是TestCategoryAttribute。这个构建被设置为在任何时候有人签入代码时运行,并且被设计为能够快速运行,并为您提供一种快速的方法来查看是否有任何明显的问题被破坏

第二个构建是一个夜间构建,它涉及面更广,如果需要,可以运行数小时,因为它计划在深夜所有人都回家时运行。此构建将构建解决方案,运行所有单元测试,包括未在CI构建中运行的单元测试,如果一切正常,则打包解决方案。此构建还可以执行诸如增量修订号之类的操作


那么,有没有一种方法可以使用构建触发器运行不同的构建步骤呢?我没发现。但这不是我所说的普通或最佳实践。为两个不同的目标建立两个不同的构建。在TeamCity中,您可以很容易地在构建定义之间共享常见的东西,如VCS根。

创建一个构建配置,它可以完成包括夜间测试在内的所有工作。在编辑配置下选择“提取模板”。基于此模板创建新配置并禁用慢速运行的测试。每个配置都可以有自己的触发器,但您没有相同步骤的两个配置的维护开销。您有两种不同的配置,但它们共享构建步骤,唯一的区别是触发器和启用的步骤