如何通过代理后面的 SonarQube install/update 插件?

How to install/update plugins through SonarQube behind a proxy?

我安装了 SonarQube 5.1.2,我正在尝试安装和更新一些插件,服务器无法直接访问互联网,我们这里有一个代理,假设 http://1.1.2.3:9191/ 是我们的代理并且我们有用户和密码认证。好吧,我已经根据文档

写了sonar.properties
http.proxyHost=10.1.2.3
http.proxyPort=9191
http.proxyUser=theuser
http.proxyPassword=thepassword

我转到 http://sonar.sub.domain:9000/updatecenter/updates,我可以看到插件列表和更新,所以我假设在这一点上通过代理进行的通信是可以的。

但是,当我尝试更新或安装插件时,页面中出现此错误(请注意 no proxy 消息)。

Fail to download the plugin (scmsvn, version 1.2) from https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (error is : Fail to download: https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (no proxy))   [hide] 

所以我调试日志记录并尝试,这出现在日志中

2015.09.11 09:32:47 DEBUG web[o.s.a.u.HttpDownloader$BaseHttpDownloader$HttpInputSupplier] Download: http://update.sonarsource.org/update-center.properties (HTTP proxy: 1.1.2.3:9191)
2015.09.11 09:32:49 DEBUG web[o.s.a.u.HttpDownloader$BaseHttpDownloader$HttpInputSupplier] Download: https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (no proxy)
2015.09.11 09:33:10 DEBUG web[o.s.s.p.PluginDownloader] Fail to download the plugin (scmsvn, version 1.2) from https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (error is : Fail to download: https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (no proxy))
org.sonar.api.utils.SonarException: Fail to download: https://bintray.com/artifact/download/sonarsource/SonarQube/org/sonarsource/scm/svn/sonar-scm-svn-plugin/1.2/sonar-scm-svn-plugin-1.2.jar (no proxy)
...

还有很多行的 StackTrace,

因此,当它尝试访问 update-center.properties 资源时没有问题,它会通过代理,如 (HTTP proxy: 1.1.2.3:9191) 消息所示。但是当它试图下载包时,它只是绕过代理(我不知道为什么),如第二行和第三行末尾的消息 (no proxy)

所以我的问题是,我必须如何配置 SonarQube 才能与代理一起使用?

注意:这个问题类似于 SonarQube Proxy Configuration, Tricky 但我认为不一样我可以看到插件和更新列表,但可以下载它们,所以我认为不是重复的。

我们在使用代理的IP地址时也遇到过这个问题。当我切换到代理名称时,它工作正常。

DEBUG web[o.s.a.u.HttpDownloader$BaseHttpDownloader$HttpInputSupplier] Download: http://update.sonarsource.org/update-center.properties (HTTP proxy: www-proxy5.in.my.com:11)
DEBUG web[o.s.a.u.HttpDownloader$BaseHttpDownloader$HttpInputSupplier] Download: http://downloads.sonarsource.com/plugins/org/codehaus/sonar-plugins/python/sonar-python-plugin/1.5/sonar-python-plugin-1.5.jar (HTTP proxy: www-proxy5.in.my.com:11)

尝试使用代理名称而不是 IP 地址,我们没有进行任何身份验证,因此将 user/password 留空。如果这不起作用,请 post 整个堆栈跟踪。

问题是 sonar 配置文件允许你设置 http 代理,但它与 httpsftp 无关,然后那些使用 https 的更新站点失败。

所以解决方法: 添加到 sonar.properties

sonar.web.javaAdditionalOpts=-Dhttps.proxyHost=10.1.2.3 -Dhttps.proxyPort=9191 -Dhttps.proxyUser=theuser -Dhttps.proxyPassword=thepassword