我正在尝试从jenkins job执行以下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设置中的基本网址设置为http://hostname:9095并尝试但是失败并出现相同的错误。
Sonaqube与maven和jenkins安装在同一台机器上。
我认为这可能是由于代理(可能是我错了),所以我在sonar.properties文件中设置了代理设置并尝试但没有运气。
仅供参考,它正在使用以下版本的sonar-maven插件,
[INFO] --- sonar-maven-plugin:3.3.0.603:sonar (default-cli) @ my-stc ---
之前有人遇到同样的问题吗?
答案 0 :(得分:12)
问题在于sonar-maven插件版本3.3
我尝试使用3.2版本,但它确实有效。我将以下内容传递给maven命令行参数org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
答案 1 :(得分:4)
我最近遇到了一个非常相似的问题 对我而言,解决方案与代理设置有关,如果您没有代理,请跳过此答案。
我的命令
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中删除了代理条目,然后看到它正在运行并与声纳服务器通信
因此,如果您有代理,则可能要在nonProxyHosts
的字段 ~/.m2/settings.xml
中将声纳服务器指定为主机
<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年的历史(2020年9月为4年)。我在其他线程中看到过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:错字
答案 2 :(得分:3)
尝试在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>
这对我有用。
答案 3 :(得分:0)
升级以解决声纳版本问题。
org.apache.maven.plugins Maven的编译器插件 3.5.1
答案 4 :(得分:0)
此问题也存在于org.sonarsource.scanner.maven.sonar-maven-plugin 3.5.0插件中。
升级您的POM依赖关系以使用新版本或某些早期版本(如3.2)也很稳定。
org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
答案 5 :(得分:0)
我认为这是给你的错误,因为程序无法打到你指定的端点。
如果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末尾不需要/声纳
此外,声纳运行在端口9000而不是9095上。
答案 6 :(得分:0)
我们遇到了同样的问题。在我们的案例中,Jenkins和SonarQube都在反向代理后面的同一台计算机上运行。将声纳主机URL更新为http://localhost:9000后,它解决了我们的问题。