在Jenkins上执行Sonar runner时出现500错误

11
在Jenkins上运行SonarQube独立分析时,我遇到以下错误。 SonarQube扫描程序能够识别要分析的文件并能够成功地分析它们,但问题在于当它试图将项目发布到仪表板时。
当我在浏览器中打开URL http://vv123456:9000/api/ce/submit?projectKey=pkey&projectName=pname 时,它显示"{"errors":[{"msg":"HTTP method POST is required"}]}",这意味着SonarQube webservice良好运行。
Jenkins构建错误:
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:100)
    at org.sonar.runner.Main.executeTask(Main.java:70)
    at org.sonar.runner.Main.execute(Main.java:59)
    at org.sonar.runner.Main.main(Main.java:53)
Caused by: org.sonarqube.ws.client.HttpException: Error 500 on [http://vv123456:9000/api/ce/submit?projectKey=pkey&projectName=pname][1]
    at org.sonarqube.ws.client.BaseResponse.failIfNotSuccessful(BaseResponse.java:34)
    at org.sonar.batch.bootstrap.BatchWsClient.failIfUnauthorized(BatchWsClient.java:99)
    at org.sonar.batch.bootstrap.BatchWsClient.call(BatchWsClient.java:69)
    at org.sonar.batch.report.ReportPublisher.upload(ReportPublisher.java:172)
    at org.sonar.batch.report.ReportPublisher.execute(ReportPublisher.java:127)
    at org.sonar.batch.phases.PublishPhaseExecutor.publishReportJob(PublishPhaseExecutor.java:64)
    at org.sonar.batch.phases.PublishPhaseExecutor.executeOnRoot(PublishPhaseExecutor.java:51)
    at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:86)
    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:79)
    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
    ... 9 more

500 表示内部服务器错误。您确定使用的方式可以确认 Sonar 是否正常工作?另外,这些工具的版本是什么? - Shiva
@Shiva - 是的,我可以在Jenkins构建中看到Sonar分析成功,我看到日志如下: 14:53:46.992 INFO - 传感器SCM传感器 14:53:46.993 INFO - 此项目的SCM提供程序是:svn 14:53:47.009 INFO - 要分析的文件数为4 14:53:50.574 INFO - 分析了4/4个文件 14:53:50.575 INFO - 传感器SCM传感器(完成)|时间=3583ms 14:53:50.576 INFO - 传感器零覆盖率传感器我使用的版本是-Jenkins 1.580.1,SonarQube 2.2.1 - Prasann
$SONARQUBE_HOME/logs/web.log 里有什么有趣的东西吗? - G. Ann - SonarSource Team
4个回答

8
在托管Web服务的服务器上(在我的情况下是vv123456),SonarQube日志中记录了一个错误,如下所示:
No such file or directory - C:/Windows/system32/config/systemprofile/AppData/Local/Temp

因此,我在wrapper.conf中添加了指向临时文件夹的路径:

set.TMPDIR=/SonarQube/sonarqube-5.6/temp

这解决了这个问题。

谢谢你的回答,这对我很有帮助! - groverboy

6

我也遇到了这个问题。查看日志 /opt/sonar/logs/sonar.log,我看到了下面的错误:

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9122692 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.

使用了这里的建议https://dev.mysql.com/doc/refman/5.6/en/packet-too-large.html

和这里

运行sonar分析时PacketTooBigException异常

还有这里

http://codefabulae.blogspot.co.uk/2012/05/sonar-analysis-and-mysql-max-packet.html

最终的解决方案是在我的mysql配置文件/etc/my.cnf中编写以下内容:

[mysqld]
max_allowed_packet=32M

重新启动MySQL服务

sudo service mysqld restart

通过检查并验证

mysql <insert user credentials here>
mysql> show variables like "max_allowed%";

然后重新启动Sonar。

sudo service sonar restart

接着我的构建就不再出现500错误了。

以下是解决PacketTooBig问题的方法,这很可能是根本原因。


这也是我的问题,但我花了一些时间才找到相关的日志文件。在我的情况下,它是 /etc/sonarqube/logs/web.log(在看到 https://groups.google.com/forum/#!topic/sonarqube/c_DcwoN4qlg 后使用 find / -type f -name web.log 找到它)。 - Rotem

1
我找到了解决方案:用户需要在Mysql My.config文件中以及sonar.config的Mysql连接字符串中增加max_allowed_packet大小。
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&max_allowed_packet=512M 

0

尝试这个步骤,它对我有用:

  1. 停止Sonar服务器
  2. 前往Sonarqube位置并删除 temp 文件夹中的内容
  3. 启动Sonar服务器并再次运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接