You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu下通过需认证代理使用Bazel构建Gerrit失败求助

解决Bazel构建Gerrit时的代理认证407错误

我之前在公司带认证的代理环境里也碰到过一模一样的问题——Bazel完全不理会系统设置的http_proxy/https_proxy,直接抛出407代理认证失败的报错。这是因为Bazel的网络请求逻辑和wget、Maven这类工具不一样,尤其是你用的0.13.0rc2和0.20这些旧版本,对代理的支持更“挑剔”。下面给你几个靠谱的解决办法:

方法一:临时命令行配置(单次生效)

如果只是临时测试,可以在运行Bazel时直接带上代理参数,把下面的占位符换成你公司的实际代理信息:

bazel build gerrit \
  --host_jvm_args="-Dhttp.proxyHost=你的代理地址" \
  --host_jvm_args="-Dhttp.proxyPort=代理端口" \
  --host_jvm_args="-Dhttp.proxyUser=你的认证用户名" \
  --host_jvm_args="-Dhttp.proxyPassword=你的认证密码" \
  --host_jvm_args="-Dhttps.proxyHost=你的代理地址" \
  --host_jvm_args="-Dhttps.proxyPort=代理端口" \
  --host_jvm_args="-Dhttps.proxyUser=你的认证用户名" \
  --host_jvm_args="-Dhttps.proxyPassword=你的认证密码"

如果有内部域名不需要走代理,再加两行免代理配置:

--host_jvm_args="-Dhttp.nonProxyHosts=localhost|127.0.0.1|你的内部域名" \
  --host_jvm_args="-Dhttps.nonProxyHosts=localhost|127.0.0.1|你的内部域名"

方法二:全局配置文件(永久生效)

每次敲长命令太麻烦,推荐在你的用户主目录下创建/编辑.bazelrc文件,把代理配置写进去,以后所有Bazel命令都会自动加载这些设置:

# HTTP代理配置
build --host_jvm_args="-Dhttp.proxyHost=你的代理地址"
build --host_jvm_args="-Dhttp.proxyPort=代理端口"
build --host_jvm_args="-Dhttp.proxyUser=你的认证用户名"
build --host_jvm_args="-Dhttp.proxyPassword=你的认证密码"

# HTTPS代理配置
build --host_jvm_args="-Dhttps.proxyHost=你的代理地址"
build --host_jvm_args="-Dhttps.proxyPort=代理端口"
build --host_jvm_args="-Dhttps.proxyUser=你的认证用户名"
build --host_jvm_args="-Dhttps.proxyPassword=你的认证密码"

# 免代理地址(按需添加)
build --host_jvm_args="-Dhttp.nonProxyHosts=localhost|127.0.0.1|你的内部域名"
build --host_jvm_args="-Dhttps.nonProxyHosts=localhost|127.0.0.1|你的内部域名"

方法三:针对旧版本Bazel的额外配置

你用的0.13.0rc2是比较老的版本,除了JVM参数,还需要设置大写的环境变量——旧版Bazel对代理变量的大小写敏感,小写的http_proxy会被直接忽略。可以在终端里临时导出:

export HTTP_PROXY=http://用户名:密码@代理地址:端口
export HTTPS_PROXY=https://用户名:密码@代理地址:端口
export NO_PROXY=localhost,127.0.0.1,你的内部域名

要是想永久生效,把这几行加到~/.bashrc或者~/.zshrc里,重启终端就会自动加载。

最后验证

配置完之后,先清理Bazel的缓存避免旧的错误状态影响:

bazel clean --expunge

然后再运行构建命令:

bazel build gerrit

应该就能正常拉取依赖,不会再报407错误了。

内容的提问来源于stack exchange,提问作者Sonic78

火山引擎 最新活动