【问题标题】:Storing 3rd party library into source control with Continuous Integration usage使用持续集成将第 3 方库存储到源代码控制中
【发布时间】:2015-08-28 22:08:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: svn version-control continuous-integration teamcity


    【解决方案1】:

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

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

    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

    【讨论】:

      【解决方案2】:

      我想到了一些可能性:

      1. 将 CI 更改为增量更新。
      2. 避免使用 svn:externals,而是在构建期间符号链接结帐。

      【讨论】:

      • 我认为 1) 听起来是个好主意。也许如果我可以将 CI 服务器配置为简单地对已更改的文件执行 svn:update,并尝试重新构建/单元测试而不是完全签出,那可能会更好。
      • for number 2) 当你说符号链接时..你的意思是在 CI 服务器上的某处检查第 3 方库,并且只是将项目链接到该目录? (下次再次签出项目,第三方库不碰)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多