2011-03-14 18 views
4

近几个月来,我们的存储库规模不断增长,TeamCity的构建现在变得非常缓慢。我如何加快我们的TeamCity构建?

很多批量来自安装文件和其他非代码,非必要(用于构建无论如何)人们已经签入SVN的东西。

我们只是运行基本的免费版本,并有3个代理。我们的VCS结帐模式是“自动在服务器上”。这两个解决方案文件都是C#,我们正在使用MSBuild脚本。

我喜欢构建配置中的结帐规则部分,但已经读过它不起作用,因为它提取所有代码,然后应用规则,如果你问我,就会破坏对象。

构建现在需要大约1个小时,但如果我只能让TeamCity获取它所需的代码而没有其他任何东西,那么我认为我可以将其降低到10分钟或更少。

我发现了一些文章,使用MSBuild排除文件&文件夹,但我找不到任何关于从SVN中获取的构建脚本,我认为TeamCity可以做到这一点。

任何人都可以提出我们可以做出的任何改变,或者使用TeamCity和MSBuild从头开始构建一个良好的文章,这将允许我选择从SVN中获取什么?

谢谢。

+0

任何人都推荐一些关于源代码管理最佳实践,CI和解决方案结构最佳实践的好文章或书籍? – Michael 2011-03-14 17:13:13

+1

Martin Fowler ftw:http://martinfowler.com/articles/continuousIntegration.html – 2011-07-01 06:21:27

回答

2
  1. 建立只有最新变化。
  2. CI构建不需要完成发布版本的所有工作。所有CI需要编译并做一些验证。
  3. 解决方案,有时开发人员将负载放入任何单个sln。如果你在一个SLN中获得了大量的服务,并且每次只修改一个服务就可以构建它? 因此将它们分开 - 每个输出一个sln(我的意思是exe或服务或任何不是单个DLL)
  4. 平行构建。 为每个输出具有不同的构建目标(在TeamCity中)
  5. 构建到构件,部署构件。这意味着您不必等待构建才能完成部署。

十分钟同步对于SVN来说还是很长的时间,这真的要下降了,在命令行需要多长时间? 将非构建相关项目移动到另一个回购?

对于大型代码库和svn,考虑将核心组件构建到Svn中的检查二进制文件/引用节中。 这允许您将构建的对象分享给其他团队,而不是浪费时间构建其代码。

希望有帮助吗?

+0

嗨,詹姆斯 - 感谢您的回复。只是为了澄清一下,同步时间是什么意思?要用SVN做一个完整的清理结账,或者只是为了更新?随着回购增长到1GB以上,全面结账需要很长时间。更新根据更改而有所不同。我认为我们的SVN服务器并不那么快,但就像你说的10分钟真的太久了。 – Michael 2011-03-14 11:11:48

+0

我的意思是获得一个全新的代码库副本的时间。我认为你需要对这个问题进行排序。 10分钟是一个干净的副本年龄。 – 2011-03-14 11:42:03