我正在尝试使用 Sonar Runner,但不断收到套接字超时异常。我运行它的机器位于代理后面,所以我认为这可能就是问题所在。
当 Sonar Server 和 Runner 在同一个盒子上时,我仍然遇到问题,所以我也不知道这是否是 Java 没有正确从机器(OS X)中获取代理设置的问题,在特别是应该绕过代理的地址。
无论我的浏览器和
curl
配置如何,都可以访问 Sonar 服务器,只有 Sonar Runner Jar 有问题。
任何人都可以提供有关让 Sonar Runner 在代理后面工作的任何建议吗?
更新
这似乎与 OS X 相关,因为使用 Windows VM 来访问同一个 Sonar Server 是可行的,因为这是 Java,我假设这是我的 Java 设置或 OS X 网络设置的问题?
原来我的问题是 JVM 没有使用我机器的代理设置,我必须将以下内容添加到 Sonar 运行器脚本中。
SONAR_RUNNER_OPTS="-Dhttp.proxyHost=myproxy -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=my.local.host"
export SONAR_SCANNER_OPTS="-Djavax.net.ssl.trustStore=/usr/lib/jvm/java-17-openjdk-amd64/lib/security/cacerts -Dhttp.proxyHost=IP/domain -Dhttp.proxyPort=3128 -Dhttp.proxyUser=PROXY_USERNAME -Dhttp.proxyPassword=PROXY_PASSWORD -Dhttps.proxyHost=IP/domain -Dhttps.proxyPort=3128 -Dhttps.proxyUser=PROXY_USERNAME -Dhttps.proxyPassword=PROXY_PASSWORD"
(使用squid在主机上创建代理连接)。
在客户端计算机中,我使用 keytool 在 cacerts 中添加了我的 SSL 证书,因为 sonarqube 是私有托管的,并在 SONAR_SCANNER_OPTS 中传递了上面的变量,现在可以使用代理运行“sonar-scanner”cli。