使用持续集成用法将第三方库存储到源控件中

时间:2009-05-26 22:25:02

标签: svn version-control continuous-integration teamcity

我刚刚将一个非常大的第三方库(Boost)提交到我们的源代码管理中。我用自己的存储库设置它。我标记了它的版本,以便其他项目可以svn:externals这个特定的版本。

这很好,直到我意识到我的持续集成(CI)服务器每次签入一些代码时都会完成检查。 (显然,我一开始就故意设置我的CI服务器)。这可能会导致CI服务器端的结账时间非常长。

所以问题是:这是一件好事吗?有人可能会提出一种更好的方法来处理这种模式吗?

编辑:我正在使用TeamCity CI服务器。

2 个答案:

答案 0 :(得分:6)

默认情况下,TeamCity配置为缓存导出的源(Checkout模式:在服务器上自动)。这意味着第一次构建可能需要一些时间,但后续构建将明显更快,因为它只加载更改的文件。自动清理检查只会在某些情况下发生。

如果您已经检查了整个第三方库,包括文档和源代码,您可能需要创建一个结帐规则来过滤掉那些无关的文件,这样您就只剩下编译解决方案所需的二进制文件(假设你已经检查了已编译的二进制文件。)

TeamCity允许在每个构建配置中有多个VCS根目录,因此您可以更容易地排除主VCS根目录中的外部(这是默认值),然后添加指向其他存储库的另一个VCS根目录,并带有结帐规则将Boost预编译库放在预期的目录中。

有关清理结帐和结帐规则的详细信息,请参阅:

http://www.jetbrains.net/confluence/display/TCD4/Clean+Checkout#CleanCheckout-sourcescache http://www.jetbrains.net/confluence/display/TCD4/VCS+Checkout+Rules

答案 1 :(得分:3)

有些可能性浮现在脑海中:

  1. 更改CI以逐步更新。
  2. 避免使用svn:externals,而是在构建期间将结帐符号链接起来。