我在CentOS VM内的java和javascript代码上都运行SonarQube。我拉了sonarqube码头工人图像并正在运行容器。我暴露了端口9000,并且能够打开localhost:9000并与sonarqube gui进行交互。当我使用以下命令从JavaScript代码的命令行运行声纳扫描仪时:
sonar-scanner -Dsonar.projectKey=javascript_code -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin
我得到了一个经过全面分析的项目。除了JavaScript代码,我还可以使用Maven构建在Java代码上运行它。两者都可以从命令行正常工作。
当我将其添加到Jenkins管道中时,我执行完全相同的命令并获得以下信息:
Error: SonarQube server [http://localhost:9000] can not be reached
Caused by: Fail to get bootstrap index from server
Caused by: Failed to connect to localhost:9000
Caused by: Connection refused (Connection refused)
在启动容器时,我也尝试使用--network =“ host”而不是发布端口9000,但是它仍然无法通过Jenkins Pipeline连接。当我从命令行运行命令时,一切正常,就像我尝试将其放入Jenkins管道中一样。
有关如何解决此问题的任何建议?谢谢。
*编辑:使用sonarqube插件,我能够使我的分析作为Jenkins Job运行。但是,当我尝试将分析添加到管道中时,无法得到相同的SonarQube服务器错误。它说它跳过了我的项目,因为由于先前的失败,该项目已被禁止从构建中进行,并给我以下错误消息:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project sonarqubeproj:
Unable to execute SonarQube: Fail to get bootstrap index from server: unexpected end of stream on Connection{localhost:9000, proxy=DIRECT hostAddress=localhost/127.0.0.1:9000 cipherSuite=none protocol=http/1.1}: \n not found: limit=0 content=… -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project feedback-tool-ui: Unable to execute SonarQube
答案 0 :(得分:0)
您面临的问题很可能与运行jenkins有关。
我假设您还通过docker运行jenkins。这意味着在jenkins的上下文中,localhost不是您的主机系统,而是jenkins容器。这意味着您需要调整您的sonarqube-url以引用主机系统。
因此,您有多种选择:
旁注: 我不确定您是使用docker-compose还是kubernetes,但如果您不使用它,您可能还想深入研究docker-compose,因为它只是一个简单的yaml-config,您可以在其中轻松启动服务器。