MSBuild SonarQube 运行器代理身份验证

MSBuild SonarQube Runner Proxy Authentication

当 运行ning MSBuild.SonarQube.Runner.exe(版本 2.0)时,我收到以下错误:

SonarQube Scanner for MSBuild 2.0
Default properties file was found at C:\path-to-sonar\SonarQube.Analysis.xml
Loading analysis properties from C:\path-to-sonar\SonarQube.Analysis.xml
Pre-processing started.
Preparing working directories...
Checking for updates...

Unhandled Exception: System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.
   at System.Net.WebClient.DownloadFile(Uri address, String fileName)
   at System.Net.WebClient.DownloadFile(String address, String fileName)
   at SonarQube.Bootstrapper.BuildAgentUpdater.TryUpdate(String hostUrl, String targetDir, ILogger logger)
   at SonarQube.Bootstrapper.Program.PreProcess(IBuildAgentUpdater updater, IBootstrapperSettings settings, ILogger logger)
   at SonarQube.Bootstrapper.Program.Execute(String[] args, IBuildAgentUpdater updater, ILogger logger)
   at SonarQube.Bootstrapper.Program.Main(String[] args)

这是在 Jenkins Windows 从服务器上 运行,事实上,它确实需要代理身份验证。 SonarQube 服务器与 Jenkins master 或 slave 不是同一个服务器。

服务器上的更新中心已关闭,我什至尝试在 SonarQube.Analysis.xml 文件中包含以下 属性(只是为了笑):

<Property Name="sonar.updatecenter.active">false</Property>

是否可以关闭 MSBuild SonarQube Runner 中的更新功能?

虽然可能令人困惑,但此 Checking for updates 日志与更新中心完全无关。这意味着 Scanner 正在与 SonarQube 服务器通信以检查一些更新的二进制文件。所以请放心,它不会尝试访问 public 更新中心 URL。

最后我检查了扫描仪不支持代理身份验证。但是我假设 Jenkins slaves/master 和 SonarQube 服务器位于同一网络位置,即没有被代理分隔。我建议您将 SonarQube 的 URL 列入白名单,这样扫描仪就可以直接联系它,而无需通过代理。

更新:SonarQube Scanner 端正在提供新功能,包括代理身份验证。有关更多详细信息,请参阅 SCANNERAPI-77(它链接到每个扫描器的特定工单)。