如何让SonarQube(在Docker容器中运行)从Jenkins Pipeline连接到localhost:9000?

w8rqjzmb  于 2023-11-17  发布在  Docker
关注(0)|答案(2)|浏览(180)

我在CentOS虚拟机内的Java和JavaScript代码上运行SonarQube。我拉了SonarQube Docker镜像并运行容器。我暴露了端口9000,并能够打开localhost:9000并与SonarQube GUI交互。当我使用以下命令从命令行在JavaScript代码上运行Sonar-scanner时:

sonar-scanner -Dsonar.projectKey=javascript_code -Dsonar.sources=. -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin

字符串
我得到了一个经过全面分析的项目。除了JavaScript代码外,我还可以使用maven构建在Java代码上运行它。两者都可以在命令行中正常工作。
当我将其添加到Jenkins Pipeline时,我执行完全相同的命令并获得以下内容:

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 Pipeline时。
有什么建议可以解决这个问题吗?谢谢。

  • 编辑:使用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

pbwdgjma

pbwdgjma1#

你所面临的问题很可能与你如何管理jenkins有关。
我假设你也通过docker运行jenkins。这意味着在jenkins的上下文中,localhost不是你的主机系统,而是jenkins容器。这意味着你需要调整你的sonarqube-url来引用主机系统。
因此,您有多种选择:
1.使用主机系统的公共ip
1.使用主机系统的docker ip
1.通过dns解析ip。docker有一个内部DNS,如果这些容器运行在同一个网络中,你通常可以通过containername到达它们。
侧标:我不确定你是在使用docker-compose还是kubernetes,但如果你没有使用它,你可能也想深入了解docker-compose,因为它只是一个简单的yaml-config,你可以很容易地启动服务器。

6uxekuva

6uxekuva2#

我只是在jenkins中使用了sonarqube容器的ip地址,它工作了。

相关问题