Sonar+Maven+Jenkins的安装与部署

准备工作

整套环境需要如下几个东东:

1.一台服务器,对配置什么的没太大要求,能用就行。。(在cloud.sankuai.com申请就行了,我申请的是一个ubuntu的测试机)

2.Mysql。(我自己在测试机上部署了一个)

3.Jenkins 

4.Maven   (3.1)

5.SonarQube (我用的是4.0版本的,官网可下http://www.sonarqube.org

6.Jdk  (1.6以上吧)

Sonar的安装

1.先申请服务器,我申请的是ubuntu的机器,系统无所谓,ubuntu可能会好装一点。192.168.12.114,申请好之后,重设密码,就可以ssh登录了。

2.检查一下jdk,果然啥都没有。。先安装一个jdk吧,可以到oracle的网站上去下jdk-6u45-linux-x64.bin。我用的是1.6。具体安装过程省略了。记得配置JAVA_HOME,PATH,CLASSPATH的环境变量。

3.安装maven,安装过程省略。同样别忘了配置环境变量。

4.下载到SonarQube的安装包后,scp到服务器上,用unzip解压。然后到bin目录下找到相应的系统路径,比如我用的64位ubuntu就选的是linux-x86-64目录,执行sh sonar.sh start,就启动了。sonar内嵌了jetty,所以默认可以通过如下访问:http://192.168.12.114:9000,如果你看到如下类似的界面,说明你已经在安装sonar的路上成功了30%。

扫描二维码关注公众号,回复: 3082178 查看本文章

5.Sonar里刚装上是没有数据的,所以就需要有个数据库来存储数据的。。。刚刚之所以能够启动,是因为sonar本身有个自带的H2数据库,官方建议实际中还是要自己装一个数据库,sonar支持oracle、postgresql、mysql,所以问题来了,我们需要装一个mysql。。。

MySql的安装与设置

1.ubuntu下安装mysql非常easy,直接 sudo apt-get install mysql-server  就可以了,没有比这更简单的了

2.安装完之后,可以用netstat看一下端口是否正常启动,默认是3306。之后你就可以通过service mysql start/stop/restart操作了。

3.如果要让sonar能用的话,需要创建创建一个sonar用户,以及一个sonar数据库,具体的方法如下:

#mysql -u root -p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
mysql> FLUSH PRIVILEGES;

4.最后一步,记得到/etc/mysql/my.cnf文件中,找到bind-address,将127.0.0.1改成0.0.0.0或者注释掉,否则将无法远程mysql数据库。

Sonar启动配置

1.在配置完mysql之后,我们需要配置一下sonar了,这里主要指配置sonar的访问地址,以及使用的数据库。在sonar的安装目录,找到conf目录,里面的文件

sonar.properties就是我们要找的了。

2.使用vim打开此文件,里面每一行都会有比较详细的说明,所以一般都能看懂,这里挑最主要的几项进行说明。

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

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

由于我的sonar和mysql是在同一个服务器上,所以url配置的是localhost,如果用得远程的mysql,可以改成相应的ip。

其它的配置采用默认的就可以了,例如web端口为9000。

3.配置完成后,再次重启sonar,还是到bin目录下执行 sh sonar.sh restart,通过日志(在logs目录下),可以看到sonar自动连接到mysql数据库,并建了一堆表,如下:

Database changed

mysql> show tables

    -> ;

+---------------------------+

| Tables_in_sonar           |

+---------------------------+

| action_plans              |

| active_dashboards         |

| active_rule_changes       |

| active_rule_notes         |

| active_rule_param_changes |

| active_rule_parameters    |

| active_rules              |

| alerts                    |

| authors                   |

| characteristic_edges      |

| characteristic_properties |

| characteristics           |

| dashboards                |

| dependencies              |

| duplications_index        |

| events                    |

| graphs                    |

| group_roles               |

| groups                    |

| groups_users              |

| issue_changes             |

| issue_filter_favourites   |

| issue_filters             |

| issues                    |

| loaded_templates          |

| manual_measures           |

| measure_data              |

| measure_filter_favourites |

| measure_filters           |

| metrics                   |

| notifications             |

| perm_templates_groups     |

| perm_templates_users      |

| permission_templates      |

| project_links             |

| project_measures          |

| projects                  |

| properties                |

| quality_models            |

| resource_index            |

| rule_notes                |

| rules                     |

| rules_parameters          |

| rules_profiles            |

| schema_migrations         |

| semaphores                |

| snapshot_data             |

| snapshot_sources          |

| snapshots                 |

| user_roles                |

| users                     |

| widget_properties         |

| widgets                   |

+---------------------------+

53 rows in set (0.00 sec)

MAVEN执行sonar扫描

1.理论上,在配置完以上步骤后,我们就可以使用maven进行代码扫描了,首先使用git下载最新的代码,例如test。

2.还要配置一下maven,打开settings.xml文件,增加如下内容(主要是配置mysql):

   <profile>

      <id>sonar</id>

      <activation>

       <activeByDefault>true</activeByDefault>

      </activation>

   <properties>

   <sonar.jdbc.url> jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true</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://192.168.12.114:9000</sonar.host.url>

  </properties>

  </profile>

3.之后cd到test中根目录,就是有pom文件的那个,执行mvn sonar:sonar。就可以完成sonar的扫描了,它会自动把结果扫描保存到mysql,执行完成之后,登陆sonar的页面http://192.168.12.114:9000,如下:

红框里的东西就是我们刚生成的报告,点击进去自己看吧。

Jenkins与sonar的集成

1.上面maven生成sonar报告的方式,还是比较原始的。。如果你想更进一步的话,还可以跟Jenkins进行集成,这样定制一个job每天跑一次,就可以每天得到最新的sonar报告了。下面讲Jenkins的配置过程,需要的账号的权限比较高。

2.首先你要获得Jenkins的系统配置的权限,这个是在关飞的帮助下拿到的。打开Jenkins-》系统管理-》管理插件,先安装sonar的插件吧,具体的安装过程比较简单,不再详述。

3.安装完插件之后,要到Jenkins-》系统管理-》系统配置,配置sonar的一些参数。如下图:

4.之后就可以定制一个job了,这里我们选取hotel-server的代码,在“构建后操作”中勾选sonar,就可以了。

5.然后就是触发一次构建了,具体的过程就跟maven触发sonar的过程一样了,触发完成后,在jenkins的界面中可以看到sonar的链接。

6.点击sonar的图标,就能自动连接到sonar平台了,如下:

从上面可以看到许多信息,包含代码行数,代码的问题数,单元测试覆盖率,重复行数等信息。

结语

sonar的功能非常强大,有兴趣的可以仔细研究一下,里面可以定制各种代码检查规则,是一个非常棒的代码质量管理平台。

猜你喜欢

转载自blog.csdn.net/jdzms23/article/details/82220721
今日推荐