2

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

这很好,直到我意识到我的持续集成(CI)服务器每次签入一些代码时都会进行完整的签出。(很明显,我一开始是故意这样设置我的 CI 服务器的)。这可能会导致 CI​​ 服务器端的结帐时间很长。

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

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

4

2 回答 2

6

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

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

TeamCity 允许在每个构建配置中使用多个 VCS 根,因此您可能更容易在主 VCS 根(这是默认设置)中排除外部,然后添加另一个指向您的其他存储库的 VCS 根,并使用签出规则将在预期目录中提升预编译库。

有关干净结帐和结帐规则的更多信息,请参阅:

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

于 2009-06-09T04:03:26.403 回答
3

想到了一些可能性:

  1. 更改 CI 以增量更新。
  2. 避免使用 svn:externals,而是在构建期间符号链接结帐。
于 2009-05-26T22:41:30.007 回答