22
votes

I've recently installed the latest version of Jenkins, SonarQube 6.0 (running on a separate server) and when the Jenkins job attempts to upload sonar scanner results to the SonarQube server, I get the following error:

'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 413 on http://****`

What could be the cause? An error in the sonar-project properties?

4
See this explanation of HTTP 413. Could you tell something about the project size?Jeroen Heier
Is SonarQube behing a reverse poxy ? In this case, the configuration may be incorrect. For instance for httpd, if you setup LimitRequestBody parameter (httpd.apache.org/docs/2.4/mod/core.html#limitrequestbody) you have reached this limit.Eric Hartmann

4 Answers

36
votes

I had the same error where my sonarqube server was behind an nginx proxy.

413 == Request entity too large as @jeroen-heier said.

I applied a change to my nginx configuration like this

server {
  ...
  client_max_body_size 20M;
  ....
}

to allow requests to be 20 megabytes, and that fixed it.

6
votes

If you run sonar in docker , the default sonar image does not contain nginx server, so there're nothing can do in container

I ran it in k8s, there's a ingress before sonar service, so you should config the ingress and the service

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sonarqube
  namespace: default
  annotations:
    ingress.kubernetes.io/proxy-body-size: "20M"
spec:
  rules:
...

To get this via the helm chart, add

ingress:
  enabled: true
  annotations:
    ingress.kubernetes.io/proxy-body-size: "20M"
5
votes

In case you're using nginx-ingress, add nginx.ingress.kubernetes.io/proxy-body-size: "20M" into the annotations:

-3
votes

Answering my own question. It turned out to be an error in setting the following property in sonar.properties file:

#sonar.web.host=0.0.0.0

Uncommenting and setting to an address means that only clients that have that address can access the sonar qube.