2016-11-15 3 views
0

Ich habe eine Sonarqube Scanner Analyseschritt meiner Jenkins hinzugefügt bauen, aber der Schritt fehlschlägt:Sonarqube Server kann nicht von Jenkins erreichen Docker mit

[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 

Mein Sonarqube Scanner in Jenkins Globale Werkzeugkonfiguration deklariert wird. Der verwendete Name lautet "http://SERVER_IP_ADDRESS:9000". Dies ist die gleiche Adresse wie die Server-Basis-URL, die ich in den Allgemeinen Einstellungen von SonarQube festgelegt habe.

Ich verwende Docker: Jenkins befindet sich in einem Docker-Container und SonarQube ebenfalls.

Die im Stacktrace SERVER_IP_ADDRESS:9000/batch_bootstrap/index genannte "unerwartete URL" kann in einem Browser geöffnet werden, der sonar-scanner-engine-shaded-6.1.jar|SOME_LETTERS_AND_NUMBERS anzeigt. Warum kann Jenkins nicht den Server erreichen?

ich auch mit Docker internen IP-Adresse versucht habe, kann diese mit zu finden:

docker inspect SONARQUBE_CONTAINER_ID | grep IP 

Antwort

3

Ort finden, wo Sie die „unerwartete url“ erwähnte im stacktrace (Parameter sonar.host.url von Sonarqube Scanner) definieren und Präfix mit http://. Die URLs müssen mit einem Schema beginnen - siehe Wikipedia. Der Browser fügt einfach http:// standardmäßig hinzu.

+0

der Tat können wir in der ersten Zeile der Konsole sehen, dass die falsche Host-URL festgelegt ist: 'Sonar-Scanner -e -Dsonar.host.url = server_ip_adresse: 9000' Ich habe versucht, die Standardwerte ändern in sonar-scanner.properties, aber die falsche Host-URL scheint nicht von dort zu kommen. Ich werde versuchen, mit diesem Argument zu finden, welches Skript Sonar-Scanner aufruft. – RotS

+0

Ich fand schließlich den Ort, an dem die "unerwartete URL" eingestellt war: Jenkins verwalten -> System konfigurieren -> SonarQube Server -> \t SonarQube Installationen -> Server URL Das 'http: //' fehlte dort. Ich dachte, ich hätte jede Jenkins-Seite verifiziert, aber nicht diese. Vielen Dank für Ihre Hilfe. – RotS

Verwandte Themen