我正在尝试在未连接互联网的网络中使用Bazel。即使不使用任何特殊的库,Bazel仍然需要通过HTTP下载一些依赖项。
我被建议尝试建立一个HTTP代理服务器,该服务器将缓存Bazel下载的文件,然后将代理服务器及其缓存传输到我们隔离的网络中。
为了使它起作用,我需要能够以两种模式操作代理:
我查看了nginx来实现此目的,但是找不到任何防止缓存中的文件被丢弃的选项。
在nginx中有什么方法可以做到这一点?如果没有代理,该代理适合我的用例吗?也许还有另一种我没有考虑过的解决方案?
您可以在气密的环境中使用--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