【问题标题】:Run Sonar from another machine从另一台机器运行声纳
【发布时间】:2014-01-24 01:19:15
【问题描述】:

我已经在我的机器上安装了 (1) SonarQube 和 Maven/Jacoco/Surefire 插件, 但我想测试一个属于另一台机器的项目(2)并得到结果 在#1 机器的服务器上。两者都已设置 SonarQube。

所以,我尝试将 #1 机器的地址及其数据库设置为主机 url:

#2机器的设置:

settings.xml:

<sonar.jdbc.url>jdbc:mysql://<#1_machine_address>:3306/sonar</sonar.jdbc.url
<sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName
<sonar.jdbc.username>sonar</sonar.jdbc.username> <sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://<#1_machine_address>:9000</sonar.host.url>

sonar/conf/sonar.properties:

sonar.jdbc.url=jdbc:mysql://<#1_machine_address>:3306/sonar

#1机器上的设置:

settings.xml:

<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://localhost:9000</sonar.host.url>

sonar.properties:

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

>

我跑 mvn sonar:sonar 来自 #2 机器,但出现错误:

[ERROR] 未能执行目标 org.codehaus.mojo:sonar-maven-plugin:2.2:sonar (default-cli) on 项目 openbet-shared_tcl-util:无法执行 SonarQube 分析: 连接数据库失败:无法加载JDBC驱动类 'com.mysql.jdbc.Driver' -> [帮助1]

编辑: 当 Sonar 仅在 #1machine 上运行时,会出现上述错误消息。 当它在两台机器上运行时,我得到了这个:

[ERROR] 未能执行目标 org.codehaus.mojo:sonar-maven-plugin:2.2:sonar (default-cli) on 项目 openbet-shared_tcl-util:无法执行 SonarQube 分析: 连接数据库失败:无法创建 PoolableConnectionFactory (通讯链路故障 [ERROR] [ERROR] 最后发送的数据包 成功到服务器是 0 毫秒前。司机没有 收到来自服务器的任何数据包。):连接被拒绝 [ERROR] -> [帮助1]

【问题讨论】:

  • 在 2 号机器上拥有 SonarQube 服务器是没有用的。你能把它删掉吗?此外,两个不同的 SonarQube 服务器不能指向同一个数据库。
  • 在没有声纳服务器的情况下是否可以运行 mvn sonar:sonar?如果他们不能像你说的那样指向同一个数据库,我还能做些什么呢?

标签: maven configuration sonarqube


【解决方案1】:

在装有 MySQL 的服务器上没有 sudo

为 mysql 创建 ssh 隧道

ssh user@1_machine_address -L 9999:localhost:3306 -N

使用telnet localhost 9999检查此配置。

配置本地声纳和 maven 以连接到 localhost:9999

settings.xml

<sonar.jdbc.url>jdbc:mysql://localhost:9999/sonar</sonar.jdbc.url>
...
<sonar.host.url>http://localhost:9000</sonar.host.url>

sonar.properties

sonar.jdbc.url=jdbc:mysql://localhost:9999/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

与 MySQL 的连接被拒绝

Maven 声纳插件无法连接到您的数据库,请确保端口 3306 已打开且可访问。你可以用命令检查这个

telnet 1_machine_address 3306

检查1_machine_address上的防火墙,需要这样的东西:

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

确保 mysql 配置为可从其他服务器访问。默认不是。

/etc/mysql/my.cnf中的Mysql配置应该已经定义了远程服务器可以访问的IP地址或者0.0.0.0,例如:

bind-address        = 0.0.0.0

警告:这有潜在的危险,请确保您安全!

无法加载 JDBC 驱动程序类 'com.mysql.jdbc.Driver'

你确定mysql驱动就位吗?

sonar/extensions/jdbc-driver/mysql/mysql-connector-java-5.1.26.jar 

声纳重启了吗?

【讨论】:

  • 我不明白 mysql 数据库设置有什么问题。这就是我发布的原因。有什么想法吗?
  • 是的,两台机器上都有mysql驱动!
  • 声纳重启了吗?只是问:)
  • 错了,只从 machine2 执行ssh user@1_machine_address -L 9999:localhost:3306 -N(或者如果它已经在工作,请使用 telnet 检查)!我们需要从 machine2 到 machine1 建立隧道。在 machine2 上的这个声纳可以连接到通过隧道连接到 machine1 的 virtual 数据库 localhost:9999
  • 隧道可能正在工作 - 使用 telnet telnet localhost 9999 进行检查。 machine2 上的声纳如何配置? Sonar 和 maven 应该将数据库配置为 localhost:9999,这是真的吗?
猜你喜欢
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2018-02-05
  • 2015-10-23
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
相关资源
最近更新 更多