Jenkins使用Docker无法访问SonarQube服务器

我在Jenkins版本中添加了一个SonarQube扫描仪分析步骤,但该步骤失败:

[Test_gitlab] $ /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/http_INTERNAL_DOCKER_IP_ADDRESS_9000/bin/sonar-scanner -e -Dsonar.host.url=SERVER_IP_ADDRESS:9000 ******** -Dsonar.projectBaseDir=/var/jenkins_home/workspace/Test_gitlab INFO: Option -e/--errors is no longer supported and will be ignored INFO: Scanner configuration file: /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/http_INTERNAL_DOCKER_IP_ADDRESS_9000/conf/sonar-scanner.properties INFO: Project root configuration file: NONE INFO: SonarQube Scanner 2.8 INFO: Java 1.8.0_102 Oracle Corporation (64-bit) INFO: Linux 3.10.0-327.10.1.el7.x86_64 amd64 INFO: User cache: /var/jenkins_home/.sonar/cache ERROR: SonarQube server [SERVER_IP_ADDRESS:9000] can not be reached INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 0.214s INFO: Final Memory: 4M/209M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarQube Scanner execution org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$1.run(IsolatedLauncherFactory.java:84) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$1.run(IsolatedLauncherFactory.java:71) at java.security.AccessController.doPrivileged(Native Method) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:71) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher(IsolatedLauncherFactory.java:67) at org.sonarsource.scanner.api.EmbeddedScanner.doStart(EmbeddedScanner.java:218) at org.sonarsource.scanner.api.EmbeddedScanner.start(EmbeddedScanner.java:156) at org.sonarsource.scanner.cli.Main.execute(Main.java:72) at org.sonarsource.scanner.cli.Main.main(Main.java:61) Caused by: java.lang.IllegalStateException: Fail to download libraries from server at org.sonarsource.scanner.api.internal.Jars.downloadFiles(Jars.java:93) at org.sonarsource.scanner.api.internal.Jars.download(Jars.java:70) at org.sonarsource.scanner.api.internal.JarDownloader.download(JarDownloader.java:39) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$1.run(IsolatedLauncherFactory.java:75) ... 8 more Caused by: java.lang.IllegalArgumentException: unexpected url: SERVER_IP_ADDRESS:9000/batch_bootstrap/index at org.sonarsource.scanner.api.internal.shaded.okhttp.Request$Builder.url(Request.java:141) at org.sonarsource.scanner.api.internal.ServerConnection.callUrl(ServerConnection.java:109) at org.sonarsource.scanner.api.internal.ServerConnection.downloadString(ServerConnection.java:98) at org.sonarsource.scanner.api.internal.Jars.downloadFiles(Jars.java:78) ... 11 more ERROR: ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging. ERROR: SonarQube scanner exited with non-zero code: 1 Finished: FAILURE 

我的SonarQube扫描仪在Jenkins全局工具configuration中声明。 使用的名称是“ http:// SERVER_IP_ADDRESS:9000 ”。 这与我在SonarQube常规设置中设置的服务器基址相同。

我使用的是Docker:Jenkins在Docker容器中,SonarQube也是如此。

SERVER_IP_ADDRESS:9000/batch_bootstrap/index提到的“意外URL”可以在浏览器中打开,该浏览器显示sonar-scanner-engine-shaded-6.1.jar|SOME_LETTERS_AND_NUMBERS 。 那Jenkins为什么不能到达服务器?

我也试过用Docker的内部IP地址,可以发现:

 docker inspect SONARQUBE_CONTAINER_ID | grep IP 

sonar.host.url (SonarQube扫描仪的参数sonar.host.url )中提到的地方find你定义的“意外URL”,并用http://前缀。

url必须以计划开始 – 请参阅维基百科 。 浏览器只是默认添加http://