【问题标题】:SonarQube server can not be reached by Jenkins using DockerJenkins 使用 Docker 无法访问 SonarQube 服务器
【发布时间】:2017-03-29 18:14:26
【问题描述】:

我已在我的 Jenkins 构建中添加了 SonarQube Scanner 分析步骤,但该步骤失败:

[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 全局工具配置中声明。使用的名称是“http://SERVER_IP_ADDRESS:9000”。这与我在 SonarQube 常规设置中设置的服务器基本 URL 相同。

我正在使用 Docker:Jenkins 在 Docker 容器中,SonarQube 也是。

stacktraceSERVER_IP_ADDRESS:9000/batch_bootstrap/index中提到的“unexpected url”可以在浏览器中打开, 显示sonar-scanner-engine-shaded-6.1.jar|SOME_LETTERS_AND_NUMBERS。 那么为什么 Jenkins 无法访问服务器呢?

我也尝试过使用 Docker 内部 IP 地址,可以通过以下方式找到:

docker inspect SONARQUBE_CONTAINER_ID | grep IP

【问题讨论】:

    标签: jenkins docker sonarqube sonarqube-ops


    【解决方案1】:

    找到定义堆栈跟踪中提到的“意外 url”的位置(SonarQube Scanner 的参数 sonar.host.url),并在其前面加上 http://

    URL 必须以方案开头 - 请参阅 Wikipedia。浏览器默认添加http://

    【讨论】:

    • 确实,我们可以在控制台的第一行看到设置了错误的host url:sonar-scanner -e -Dsonar.host.url=SERVER_IP_ADDRESS:9000我试图修改sonar-scanner.properties中的默认值,但是错误的host url似乎不是从那里来的。我将尝试使用此参数查找哪个脚本正在调用 sonar-scanner。
    • 我终于找到了设置“unexpected url”的地方:管理 Jenkins -> 配置系统 -> SonarQube 服务器 -> SonarQube 安装 -> 服务器 URL http:// 在那里丢失。我以为我已经验证了每个 Jenkins 页面,但不是这个。感谢您的帮助。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2022-12-21
    • 2022-08-19
    • 2021-12-31
    • 2021-07-03
    • 2017-07-28
    相关资源
    最近更新 更多