Build Cache - 基本设置和配置

此功能仅在 Incredibuild 的 Enterprise and Business Plans 中可用,且当前的可用性有限。欲了解更多详情,请联系您的客户代表。

如何启用和配置 Build Cache

  1. 在启动代理服务上启用 Build Cache:

    1. 如果您使用的是浮动 Initiator,并且希望在所有这些启动器上默认启用 Build Cach,请前往 Coordinator ManagerSettingsAgents然后勾选 Automatic Build Cache Allocation

    2. 如果您使用的是固定启动代理服务,或者你希望手动选择哪些浮动代理使用 Build Cache:

      1. 前往 Coordinator Manager > Agent List 然后选择想要的 Initiator。

      2. 点击 ActionsEnable Build CacheAllocate Build Cache。如果您没有看到此选项,请确保 Agent 拥有 Initiator 许可证。

  2. 在每台启动代理服务主机上(可以一起配置,也可以单独配置),定义是否要使用本地缓存或远程缓存。

    1. 在代理列表中,选择所需的 Initiator。

    2. 点击 Actions >  Enable Build Cache,然后选择 Local Cache,Shared Cache,或两者都选。如果选择了 Shared Cache 共享缓存,请指定拥有共享缓存的主机的位置。

  3. 选择所有具有 Build Cache 的 Initiator,然后点击Actions > Build Cache Configuration,以设置所选机器上存在的缓存大小和位置。大小限制应为将为该文件缓存提供数据的所有构建输出大小的 2-3 倍,但要求可能会因您的环境而异。有关更多详细信息,请参阅下方。

自定义特定构建或项目的 Build Cache 设置

覆盖 Specific Build 的 Build Cache 行为

由客户端定义在 Agent Settings 中默认使用哪些端点,但这可以在特定构建的构建命令中被覆盖。通过定义标志,您可以在 BuildConsole for Make and Build ToolsBuildConsole for Visual Studio 以及 IBConsole for DevTools CLI 中覆盖 Build Cache 行为。

例如,如果您正在使用 BuildConsole 命令运行 Incredibuild for make and build tools,并且您想要使用远程缓存,您需要添加 / /buildcacheremoteserver=[ip address:port] 标志。

这对于 CI 构建特别有用,因为构建命令是整个 CI 脚本的一部分。

为特定项目设置 Build Cache 行为

您还可以使用生成配置文件配置 Build Cache 行为以匹配特定项目。您可以创建包含特定项目设置的配置文件,并将该文件与项目源代码一起存储。您可以在多个 Agent 和 CI 机器上一致地使用相同的设置(例如,特定共享缓存)。有关详细信息,请参阅 Modify Settings per Build using a Configuration File

用例和最佳实践

开发人员机器 - 居家办公或办公室办公

对于大多数机器,我们建议同时启用本地和远程缓存。假设这些机器是永久性机器(笔记本电脑、台式电脑或永久性虚拟机),并且还有其他机器(通常是 CI 服务器)仅使用远程缓存写入该缓存。如果没有机器专门使用共享缓存进行写入,开发人员机器应仅使用本地缓存。

当您 Agent 上同时启用本地和远程缓存时,该 Agent 只能提供本地缓存。

运行构建时,首先检查本地缓存。如果命中,则使用缓存。否则,Incredibuild 会检查远程缓存。如果有命中,我们会使用并更新本地缓存,以便将来执行使用本地缓存并减少网络流量。由于上传带宽速度较低,这居家办公时特别有用。如果没有命中,则运行构建,并将信息添加到本地缓存中。

CI 机器

CI 构建通常可以被认为是“真实来源”:其通常包含值得信赖且稳定的代码,并且由其他 CI 构建和开发人员共享。在大多数情况下,合并后成为 CI 构建一部分的代码更改频率会更低。因此,其编译工件(目标文件等)可能会被其他人使用,从而提高构建缓存效率,并为每个用户提供更快的构建速度。当将机器用于 CI 用例时,我们建议仅使用远程(共享)缓存。然后,这些机器将同时读取和写入远程缓存。这可以确保即使 CI 机器被拆除(如在许多用例所示),其内容也可用。因此居家办公或办公室办公的开发人员可以共享该缓存。

远程(共享)缓存端点

对于托管远程缓存的端点,请使用以下建议以最大限度地提高性能:

  • 在 Agent 上安装 Incredibuild,但不要向 Agent 分配任何许可证,以免其协助或启动任何构建。

  • 请勿在这台机器上运行其他程序,该机器是一台专用机器。

  • 添加 Agent 描述,以将 Agent 清楚地标识为您的远程缓存。

管理 Build Cache 大小和存储

缓存必须足够大,以容纳 2-3 个构建结果(对象、预编译标头、库和可执行文件),这些结果来自任何将有助于此文件缓存的构建。这些要求可能因您的环境而异。

您可以通过查看生成输出文件夹大小来了解项目的构建结果需要多少空间。

确保保存缓存的文件系统有足够的可用空间,以允许其扩大至最大大小。如果文件系统的可用空间少于 3%,Build Cache 将停止填充缓存。

一旦 Build Cache 开始运行,您可以在 Build Monitor 的输出选项卡中查看缓存的使用量,也可以在命令行中查看输出。、

文件缓存清理

文件缓存通过多种方式进行优化,例如删除重复文件和自动清理。如果文件缓存填充了 95% 的容量,则会通过删除一些内容来自动清理,直至达到 85% 的容量。

您也可以在 Build Cache 端点的 Agent Settings 中手动清除缓存。

您可以在 Build Monitor 的输出选项卡中查看缓存的使用量,也可以在命令行中查看输出。