Build Cache - 设置

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

如何在 Initiator 上启用 Build Cache

  1. 转到 Coordinator > Agent List

  2. 选择每个你想启用 Build Cache 的 initiator agent。

  3. 点击 Actions >  Allocate Build Cache。如果您没有看到此选项,请确保 Agent 拥有 Initiator 许可证。

  4. 点击 Actions > Build Cache Configuration,并设置缓存大小和位置。大小限制应为将为该文件缓存提供数据的所有构建输出大小的 2-3 倍,但要求可能会因您的环境而异。

  5. 在每台 Initiator Agent 机器上,您可以在 Agent Settings > Initiator > Build Cache Client 项卡中定义使用本地缓存、远程缓存还是两者都使用。

    您可以使用 Include more details in build output 复选框利更多详细信息来增强命令行和 Build Monitor 中的输出。使用此选项会对构建性能产生不利影响,因此仅在希望分析 Build Cache 效率时材启用此选项,例如第一次使用 Build Cache 时,或当其效率下降时。

Build Cache 大小

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

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

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

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

覆盖 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

文件缓存清理

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

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

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

监测 Build Cache 的有效性

使用 Build Cache 所节省的时间的细节将包含在你所有构建的输出中。这可以在 Build Monitor 的输出选项卡中看到,也可以在命令行中看到输出。

您还可以在 Build Monitor Graphs 中查看信息。

  • 要缓存的任务是已执行的任务,并且是要添加到 Build Cache 中以供将来构建的候选任务。

  • 缓存命中是从 Build Cache 中检索的任务,而非执行的任务。

如果命中率很低,您可以通过增强输出以包含每个任务的信息来调查原因。转到 Agent Settings > Initiator > Build Cache Client Settings,并选中 Include more details in build output 框。

现在,构建输出将包括关于每个任务的大量信息,包括命中或未命中,如果缓存未命中,它将向您显示未命中的原因。例如,您可以识别频繁更改的标头文件或对缓存不友好(不确定性)的自动生成代码。