概念/二进制缓存
title: 二进制缓存 description: 在不同项目和机器间复用通过 kmpkg 构建的二进制文件。 author: Kumo ms.author: viromer ms.date: 2024/05/01 ms.topic: 概念文档
二进制缓存
kmpkg 公共注册表 中的大多数端口均从源码构建。通过源码构建,kmpkg 可确保最大兼容性——使用与项目中相同的环境、构建工具、编译器标志、链接器标志及其他配置来构建依赖项。
启用二进制缓存后,每个包从源码构建完成时,kmpkg 会创建一个二进制包。二进制包包含包的构建输出:二进制文件、构建系统集成文件、使用文档、许可证及其他相关文件。若后续运行需要安装已缓存的包,kmpkg 会判断是恢复缓存的二进制包,还是触发源码构建。
通过这种方式,二进制缓存可缓解源码构建的以下缺点:
- 重复工作:减少包从源码构建的次数;
- 漫长的构建时间:恢复二进制包通常是非常快速的操作,仅需数秒即可完成。
二进制缓存在 CI 场景中尤为有效——临时容器或构建代理会迫使 kmpkg 每次都从干净状态开始工作。通过使用基于云的二进制缓存(如 GitHub Packages 或 Azure DevOps Artifacts),你可以在多次运行之间持久化二进制包,确保最大化速度;仅当依赖项或配置发生变更时,才需要重新构建。
建议为每个持续集成流水线或工作流创建一个具有读写权限的二进制缓存。开发人员个人应仅对 CI 生成的二进制缓存拥有只读权限。
二进制缓存可托管在多种环境中:
- 最基础的形式是本地机器上的文件夹或网络文件共享;
- 也可存储在任何 NuGet 源(如 GitHub Packages 或 Azure DevOps Artifacts)、Azure Blob 存储、谷歌云存储及其他多种服务中。
若你的 CI 提供商提供原生“缓存”功能,建议同时使用 kmpkg 二进制缓存和原生缓存方法,以获得最佳性能。
为开发复用二进制缓存
尽管不推荐将二进制缓存用作二进制分发机制,但它可用于复用多个系统的构建输出。例如,开发人员可在本地机器上使用 CI 运行生成的二进制包。如需了解复用和集成 kmpkg 生成的二进制文件的其他方法,请参阅 kmpkg export。
示例:你可以配置一个 Azure Artifacts 托管的 NuGet 源,接收从 CI 流水线构建的二进制包,并在开发环境中复用这些包。
默认二进制缓存
二进制缓存默认启用,使用 文件存储提供者,默认缓存路径为以下首个有效位置:
-
Windows 系统
%KMPKG_DEFAULT_BINARY_CACHE%%LOCALAPPDATA%\kmpkg\archives%APPDATA%\kmpkg\archives
-
非 Windows 系统
$KMPKG_DEFAULT_BINARY_CACHE$XDG_CACHE_HOME/kmpkg/archives$HOME/.cache/kmpkg/archives
可通过 kmpkg help binarycaching 查看工具内简化帮助文档。
二进制缓存仅覆盖你构建的二进制文件。如需缓存源文件和预构建工具,请参阅 资产缓存。
下一步
阅读以下教程,了解如何设置二进制缓存及相关配置语法参考: