我正在尝试从 jenkins 作业执行以下 Maven 命令,
mvn clean install sonar:sonar -Dsonar.host.url=http://hostname:9095/sonar -Dsonar.projectKey=mavensample -Dsonar.login=admin -Dsonar.password=admin -X
但是失败并出现以下错误,
[DEBUG] 18:20:49.119 Download: http://hostname:9095/batch/index
[ERROR] 18:20:49.176 SonarQube server [http://hostname:9095] can not be reached
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.920 s
[INFO] Finished at: 2017-07-14T18:20:49+02:00
[INFO] Final Memory: 20M/171M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli) on project my-stc: Unable to execute SonarQube: Fail to get bootstrap index from server: Status returned by url [http://hostname:9095/batch/index] is not valid: [403] -> [Help 1]
当我尝试在浏览器中访问 http://hostname:9095 时,它可以工作。
我还在 sonarqube 设置中将基本 url 设置为 http://hostname:9095 并尝试过,但失败并出现相同的错误。
Sonaqube 与 maven 和 jenkins 安装在同一台机器上。
我认为这可能是由于代理(可能是我错了),所以我在 sonar.properties 文件中设置了代理设置并尝试但没有运气。
仅供参考,它正在使用以下版本的 sonar-maven 插件,
[INFO] --- sonar-maven-plugin:3.3.0.603:sonar (default-cli) @ my-stc ---
有人之前遇到过同样的问题吗?
问题出在 sonar-maven 插件版本 3.3 上 我尝试使用 3.2 版本,它有效。我将以下内容传递给 Maven 命令行参数
org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
我最近遇到了一个非常相似的问题 对我来说,解决方案与代理设置有关,如果您没有代理,请跳过此答案。
我的命令
mvn clean sonar:sonar -Dsonar.host.url=http://192.168.56.101:9000 -Dsonar.login=admin -Dsonar.password=admin
[INFO] --- sonar-maven-plugin:3.7.0.1746:sonar (default-cli) @ baselineV001-parent ---
[INFO] User cache: /home/developer/.sonar/cache
[ERROR] SonarQube server [http://192.168.56.101:9000] can not be reached
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for baselineV001-parent 1.0.0-SNAPSHOT:
... skipping some info lines for brevity (its a big project)
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project baselineV001-parent: Unable to execute SonarQube: Fail to get bootstrap index from server: Status returned by url [http://192.168.56.101:9000/batch/index] is not valid: [503] -> [Help 1]
日志的关键部分是http://192.168.56.101:9000/batch/index无效。我可以卷曲这个网址并且它可以工作。
稍微思考了一下与curl的不同之处之后,我在maven设置中设置了一个代理
~/.m2/settings.xml
,但我没有为curl设置一套。
为了检查代理是否是问题所在,我删除了 settings.xml 中的代理条目,然后我看到它正在工作并与我的 sonarqube 服务器通信
因此,如果您有代理,您可能需要在
nonProxyHosts
中的
~/.m2/settings.xml
字段中将您的 sonarqube 服务器指定为主机
<proxies>
<proxy>
<id>intranet-proxy</id>
<active>true</active>
<protocol>http</protocol>
<username/>
<password/>
<host>proxy.intra.redacted.com</host>
<port>8080</port>
<nonProxyHosts>localhost|192.168.56.101</nonProxyHosts>
</proxy>
</proxies>
还有一个关于建议人们使用 v3.2 的小问题。这可能是一个修复,但它不应该是长期答案,因为 v3.2 目前已经 3 岁了(4 岁到 2020 年 9 月)。我在其他线程中看到 sonarsource 支持团队表示为我们提供有关此问题的更多信息,但是是在较新版本的 sonar-maven-plugin 上。
编辑1: 忘了说,我在https://github.com/SonarSource/sonar-scanner-maven找不到sonar-maven-plugin v3.3.0.603的变化,但似乎版本3.3.0.603当前(3.7.0.1746)和可能的未来版本请注意代理的 Maven 设置。 您可能会说这是以前版本中的一个错误,因为它们不尊重 Maven 的代理设置。 编辑2:错别字
尝试在 pom.xml 中使用 sonar-maven-plugin 版本 3.2
pom.xml
<properties>
<sonar.host.url>http://xxxxx:9000</sonar.host.url>
<sonar.login>be2fe3y27f07db354983dfxysdsa5256</sonar.login>
<sonar.language>java</sonar.language>
<sonar.scm.provider>git</sonar.scm.provider>
</properties>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>
这对我有用。
我们也有同样的问题。在我们的例子中,Jenkins 和 SonarQube 都在反向代理后面的同一台机器上运行。将声纳主机 URL 更新为 http://localhost:9000 后解决了我们的问题。
升级解决声纳版本问题。
org.apache.maven.plugins maven-编译器-插件 3.5.1
这个问题也存在于 org.sonarsource.scanner.maven.sonar-maven-plugin 3.5.0 插件中。
升级 POM 依赖项以使用新版本或某些早期版本(如 3.2)也很稳定。
org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
我认为它给你带来了错误,因为程序无法到达你指定的端点。
如果 URL 已有 DNS 映射,则不应指定端口。 例如,如果 http://sonar.yourcompany.com 已映射到 123.23.22.10:9000
所以你的 -Dsonar.host.url 标志应该是: -Dsonar.host.url=http://sonar.yourcompany.com
您不需要 http://sonar.yourcompany.com
末尾的 /sonar此外,声纳在端口 9000 上运行,而不是 9095。
01 - 首先,您应该访问 Maven 中心 url: https://repo.maven.apache.org/maven2/org/sonarsource/scanner/maven/sonar-maven-plugin/
02 - 然后找到低于 3 年的 sonar-maven-plugin 标签。例如,我们现在是 2022 年,那么您应该选择 [ 2022-2019 ] 之间的一个
03 - 最后在你的 mvn verify 命令中添加整个插件标签👇🏽
mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar
04 - 重新运行你的命令,万岁🥳
问题可能是声纳网址错误。
我们在 bitbucket 管道中遇到了这个问题,我们将 SONAR_HOST_URL 定义为环境变量。然而,URL 末尾有一个空格,这导致了同样的问题。