Build Cache

该项功能当前仅部分可用。欲了解更多详情,请联系您的客户代表。

Build Cache 对在 Incredibuild 中运行的每个 workload 创建一个缓存,并利用这些缓存来加速未来的 workload,从而节省时间和资源。它要求每个 initiator agent 都要有一个特殊的许可证。

概述

Workload 通常以树状结构处理。第 1 层的文件被用来创建第 2 层的文件,第 2 层被用来创建第 3 层的文件,以此类推,直到产生最终输出。

随着 workload 的处理,Incredibuild 会保存流程的细节,以供将来使用。由其他文件产生的每一个部分都作为一对输入文件和输出文件保存在缓存中。如果你在改变了一些文件后运行一个 workload,Build Cache 可以使用相似的部分来阻止部分进程的运行。

这与 Helper Cache 有什么不同?

当 Helper 被赋予一项任务时,他们需要处理的文件被存储在 Helper Cache 中。如果发送的是完全相同的文件,Helper 仍然会再次处理,但文件不需要重新传输。

在 Build Cache 中,Initiator 识别已经处理过的文件,它们被完全跳过(它们不需要被重新传输或重新运行)。

如何分配 Build Cache 许可证

必须为每个要使用 Build Cache 的 initiator 分配一个特殊的 Build Cache 许可证。

  1. 转到 Coordinator > Agent List

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

  3. 点击Actions >Build Cache License >Allocate License

注意: 你也可以使用每个代理旁边的选项 (...)菜单将许可证分配给单个 initiator。

如何在 Initiator Agent 上启用 Build Cache

除了分配许可证外,还必须为每一个将使用 Build Cache 的initiator agent 配置以下设置。

你可以启用 Build Cache,并在 Agent Settings > Build Cache 中调整设置。一旦启用,Build Cache 将用于你的所有 workload,并且不能为个别 workload 禁用。

  1. 在 initiator 机器上,进入Agent Settings > Build Cache

  2. 转到 General 窗口。

  3. 点击 Enable Build Cache

  4. 转到 Build Cache > Database. 。

  5. Build Cache 需要一个 Redis 数据库来存储元数据。你可以使用我们在安装期间自动安装在每个 Initiator 上的默认数据库,或者指定一个远程 Redis 数据库。

    如果你使用的是远程数据库,请输入 address, portpassword ,如果需要的话,以访问数据库。

  6. 无论你使用的是远程还是本地数据库,都要在 Folder 字段中指定位置。我们建议使用本地,而非远程网络文件夹以优化性能。

    如果文件夹需要证书 ,指定用户名密码

  7. 转到 Build Cache >File Cache 。这个区域定义了缓存文件本身。可以定义它们的位置、大小限制和任何必要的证书。大小限制应该是你计划运行的所有 workload 的输出大小的2-3倍,并且至少是10GB。

    你也可以在Coordinator 的 Agent List 中修改文件夹和缓存大小。选择一个 Initiator Agent,打开选项菜单,并选择 Build Cache Configuration 。这可以通过选择多个代理并使用 Actions 菜单来大规模地进行。

高级设置

  • 列出缓存文件状态。列出在命令行中运行 workload 时哪些文件被缓存了。

  • 恢复缓存的进程输出:如果一个 workload 因为在 build cache 中被发现,致使它的一部分被跳过,则这个选项允许你仍然在 console 中查看细节,一如它被完全执行。禁用它可以提高性能,但在某些情况下需要 console 输出。禁用时要谨慎。

  • 清除缓存:同时清除数据库和 build cache 。由于这些项目是 Build Cache 功能的基础,我们不建议在正常情况下清除缓存。

验证 Build Cache 的有效性

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

限制

  • Build cache 只能与 Visual Studio 2017 及更高版本一起使用。

  • Build cache 只支持使用 cl 工具集(cl.exe)的 msbuild workload。

  • Build cache 不支持运行并发的多个构建。