bazel 远程回购的本地缓存

Local cache for bazel remote repos

我们正在为一个 C++ 项目使用 运行 CI 的代码传输。我们的 CI 构建包含一个 Docker 图像,我们在其中安装系统依赖项,然后是一个 bazel build 构建我们测试的步骤。

我们的 bazel WORKSPACE 文件引入了各种外部依赖项,例如 gtest:

new_http_archive(
  name = "gtest",
  url = "https://github.com/google/googletest/archive/release-1.7.0.zip",
  build_file = "thirdparty/gtest.BUILD",
  strip_prefix = "googletest-release-1.7.0",
  sha256 = "b58cb7547a28b2c718d1e38aee18a3659c9e3ff52440297e965f5edffe34b6d0",
)

在 CI 构建期间,下载这些文件花费了大量时间。是否可以将 Bazel 设置为对这些存档使用本地缓存?

我认为 Bazel 已经在 output_base 中缓存了外部存储库(应该,如果不是,这是一个值得报告的错误)。您是否可以选择在 docker 容器中保持缓存热?例如。通过获取代码和 运行 bazel fetch //... 或一些更具体的目标?请注意,您还可以使用 bazel --output_base=/foo build //... 指定 bazel 的 output_base 在哪里。您可能会发现 this doc section 相关。

[编辑:我们很棒的 Kristina 来拯救这一天]:

您可以使用--experimental_repository_cache=/path/to/some/dir

这有帮助吗?