我刚刚将一个非常大的第三方库(Boost)提交到我们的源代码管理中。我用自己的存储库设置它。我标记了它的版本,以便其他项目可以svn:externals这个特定的版本。
这很好,直到我意识到我的持续集成(CI)服务器每次签入一些代码时都会完成检查。 (显然,我一开始就故意设置我的CI服务器)。这可能会导致CI服务器端的结账时间非常长。
所以问题是:这是一件好事吗?有人可能会提出一种更好的方法来处理这种模式吗?
编辑:我正在使用TeamCity CI服务器。
答案 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)
有些可能性浮现在脑海中: