气隙网络的依赖性归档

问题描述 投票:1回答:1

我正在尝试在未连接互联网的网络中使用Bazel。即使不使用任何特殊的库,Bazel仍然需要通过HTTP下载一些依赖项。

我被建议尝试建立一个HTTP代理服务器,该服务器将缓存Bazel下载的文件,然后将代理服务器及其缓存传输到我们隔离的网络中。

为了使它起作用,我需要能够以两种模式操作代理:

  1. [创建缓存时,代理缓存来自Bazel的所有请求,并且从不丢弃任何文件。
  2. [在网络中使用缓存时,代理从不尝试缓存任何其他文件,在缓存中提供现有文件,也从不丢弃它们。

我查看了nginx来实现此目的,但是找不到任何防止缓存中的文件被丢弃的选项。

在nginx中有什么方法可以做到这一点?如果没有代理,该代理适合我的用例吗?也许还有另一种我没有考虑过的解决方案?

nginx bazel http-proxy
1个回答
0
投票

您可以在气密的环境中使用--distdir --distdir。该分发目录应包含您正在调用的Bazel二进制文件的隐式依赖性。

要在气密环境之外构建这些依赖关系,请首先以正确的版本签出Bazel源代码树:

distribution directory

然后,构建包含该特定Bazel版本的隐式运行时依赖项的tarball:

git clone https://github.com/bazelbuild/bazel "$BAZEL_DIR"
cd "$BAZEL_DIR"
git checkout "$BAZEL_VERSION"

将此压缩包导出到可以复制到空白环境中的目录。请注意bazel build @additional_distfiles//:archives.tar 标志,因为对于目录嵌套级别,--strip-components可能非常挑剔:

--distdir

最后,当您在空白环境中使用Bazel时,传递tar xvf bazel-bin/external/additional_distfiles/archives.tar -C "$NEW_DIRECTORY" --strip-components=3 标志指向目录。我建议将其添加为--distdir条目:

.bazelrc
© www.soinside.com 2019 - 2024. All rights reserved.