3

我目前正在尝试减少在 TeamCity 中编译和单元测试项目所花费的时间。

目前我的项目大约需要 5 到 8 分钟来构建。

它的作用是:

  1. 清理任何现有文件
  2. 编译每个项目
  3. 创建安装程序

一旦完成,单元测试就会开始,运行大约需要 2 分钟。

它的作用是:

  1. 清理任何现有文件
  2. 编译每个项目
  3. 运行所有单元测试

现在,运行单元测试只需要 5 秒……所以清理和编译步骤大约需要 2 分钟……创建安装程序步骤大约需要 3 到 6 分钟。

我的第一个问题是:有没有办法配置团队城市,以便在运行单元测试时不必再次执行清理和编译步骤。我相信我们采用这种方式的主要原因是项目构建和单元测试可以由不同的构建代理运行。

我的第二个问题是:5 到 8 分钟是一个项目构建的合理时间吗?有没有办法优化解决方案中项目的编译以及安装程序的创建?

如果我可以提供任何其他详细信息,请告诉我,这可能会帮助您指出我优化构建或保持原样的正确方向。

更新以回答Nate 的一些问题

当您在 TeamCity 之外运行构建时,它是否会在单元测试之前再次进行清理/编译?不,因为当您在自己的机器上运行它时,您可以指定要运行构建脚本的哪些部分。我们有清理、编译、单元测试等部分,这些部分在团队城市中以不同方式指定,用于项目构建与单元测试运行。

如果是这样,您可以在测试之前使构建不这样做吗?我们目前不这样做的原因是,当使用不同的构建代理时,单元测试所需的文件将不可用,因此会失败。

你用什么来构建你的项目?我们使用 Nant 构建我们的项目,wix 用于安装程序,NUnit 和 NCover 用于单元测试和覆盖率报告。

你用的是什么源代码控制系统?颠覆

4

2 回答 2

3

关于#1:当您在 TeamCity 之外运行构建时,它是否会在单元测试之前再次进行清理/编译?如果是这样,您可以在测试之前使构建不这样做吗?

你用什么来构建你的项目?你用的是什么源代码控制系统?

另一个选项考虑是有多个构建配置。在我的工作中,我们有几种配置。每次提交后运行的一个。它进行了清理/编译和一些快速测试。然后我们有一个夜间配置,它会进行清理/编译和所有测试。你能做这样的事情吗?

于 2009-07-17T02:05:01.657 回答
1

根据经验,您应该尽可能缩短提交时触发的构建,因此您应该尝试将构建配置重构为精简的提交构建,并每隔一小时左右运行一次当前配置。

于 2009-08-03T21:48:55.320 回答