当 Bazel 无法通过目标环境的代理获取依赖时,仓库缓存可以提供已批准的依赖字节。

  1. 在具备预期访问权限的机器上,使用所需的项目状态和 Bazel 版本抓取到选定的缓存:
    bazel fetch --repository_cache=/path/to/repository-cache //...
  2. 通过项目的制品流程转移准备好的缓存。
  3. 在目标环境中使用相同的 --repository_cache 选项选择其路径。为其他项目状态构建的缓存可能不完整。

较旧的变通做法使用 --distdir,现已被记录为已弃用。该机制要求归档文件的文件名与 URL 的基名一致,并且其哈希与声明的下载请求一致。未解包的源码树不能替代它,而移除哈希会移除制品选择的一部分。

这并不能提供所有离线前提条件。Bzlmod 注册表元数据、Git 仓库以及由仓库规则启动的命令可能有额外需求。如果要求实时通过代理抓取,请检查其实际的下载器和 URL,而不是替换依赖定义来掩盖连接失败。

相关文章