Bazel 缓存
Tuist 提供一个 Remote Execution API 缓存,Bazel 可将其作为远程缓存连接。当某个操作的输出已存在于缓存中时,Bazel 会跳过该操作并从 Tuist 的缓存中拉取结果,从而为你的团队和 CI 环境节省编译时间。
设置#
在 Bazel 工作区的根目录下运行:
tuist bazel setup
这会在你的 .bazelrc 旁边写入一个 .bazelrc.tuist 文件,连接到距离最近的 Tuist 缓存区域,并通过每个工作区独立的凭据助手进行身份验证。它还会在你的仓库的 .bazelrc 中添加一行 try-import:
try-import %workspace%/.bazelrc.tuist
如果你希望自行管理导入,请传入 --no-add-bazelrc-import。
将 .bazelrc.tuist 添加到你的 .gitignore,并在每台机器上运行设置,而不是将其提交到版本控制。生成的文件指向当前用户 Tuist 配置目录下的绝对凭据助手路径,以及距离生成该文件的机器最近的缓存区域,因此这两个值都不会传递给团队成员或持续集成运行器。请在 .bazelrc 中提交 try-import 行,它在每台机器上都相同。
当无法找到 Bazel 工作区标记、文件是符号链接,或已配置远程缓存或 Build Event Service 时,设置会保留现有的 .bazelrc 不变。这样,再次运行它是幂等的。
运行一个普通的 Bazel 命令来验证集成:
bazel build //...
缓存活动随后会出现在 Tuist 仪表板中项目的 Bazel Cache 页面上,该页面显示缓存传输、下载和上传、读写延迟、吞吐量以及操作缓存命中率。项目 Overview 会提供相同的操作缓存命中率摘要,并与构建时长并列显示。
要查看某个命令如何使用缓存,请从 Invocations 中打开它。调用页面将操作缓存查找与内容对象请求分开,因此你可以区分冷操作缓存和缓慢的构件下载。
构建洞察#
默认情况下,tuist bazel setup 还会配置 Bazel 的 Build Event Service,以便已完成的命令出现在 Invocations 仪表板上。请参阅 Bazel 构建洞察,了解仪表板显示的内容以及如何附加自定义元数据。
如果你只想要远程缓存而不希望发送构建事件流,请使用以下命令退出:
tuist bazel setup --no-build-insights
持续集成#
使用 身份验证指南 中的一种方法对 CI 进行身份验证,然后在检出步骤中运行一次 tuist bazel setup,以便 .bazelrc.tuist 反映运行器的正确区域。有关特定提供商的示例,请参阅 持续集成指南。
数据保留#
Tuist 保留远程缓存观察数据 90 天。有关完整政策,请参阅 数据保留。