极限编程中一项建议实践便是持续集成,持续集成是指在开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。

  持续集成提供了及时发现问题、追踪问题、修复问题的机制,他替代了传统的在所有代码编写完毕后才提交QA部门进行测试的方法。

  持续集成对单元测试较为依赖,测试覆盖率越高,单元测试越准确,越能体现持续集成的效果。持续集成主要在以下方面提供好处;

 
  
 
  
  1. 1、持续自动化测试(持续集成可通过时间间隔触发,或其他方式触发)  

  2. 2、跟踪工程健康状况  

  3. 3、强制性单元测试用例,验收测试用例等  

  4. 4、静态代码检测,生成测试报告

  Hudson是一款轻量级、易扩展、易配置的持续集成平台,该集成平台maven3有良好的支持,并且扩展插件丰富,包括Findbug,PMD静态分析插件、emma单元测试覆盖率插件、junit测试报告插件等等。

  这是一套从开始到结束过程中的一个完整的代码检测,规范化,分析代码质量的一个平台。

一、首先介绍一下Sonar

  这个是一个开源的质量管理平台,专注于从项目到类方法的持续的分析和测量技术质量,它把代码质量相关软件集成到一起统一管理。它支持插件式管理,比如Checkstyle,Findbug,PMD这些插件。然后通过分析把结果保存在数据库中,用户可以通过浏览器进行浏览查看分析结果,sonar的整个流程如下图所示。

225246459.png

接下来简单介绍一下他的流程:

  • 代码通过Sonar的检查包括Sonar的插件,然后进行下一步;

  • 把检查的结果通过浏览器显示出来,通过sonar的配置文件指定的连接数据库,把检查的结果与数据库中的检查规则进行比较、分析然后得出代码漏,质量不高,不规范等问题;

安装和配置sonar步骤:

 
  
  1. 1.安装mysql,修改sonar连接DB方式为mysql

  2. # yum install mysql-connector-odbc.x86_64 mysql-server  //我是用rpm包装的,当然可以编译安装

  3. # service mysqld start

  4. # mysql

  5. mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

  6. mysql> grant all privileges on sonar.* to 'sonar'@'localhost' identified by 'sonar';

  7. mysql> flush privileges;

  8. 2.安装sonar

  9. 下载sonar然后放到服务器上

  10. # cp sonar-3.3.2.zip /usr/local/

  11. # unzip sonar-3.3.2.zip  

  12. # ln -sv sonar-3.3.2 sonar

  13. # vim sonar/conf/sonar.properties   修改sonar的配置文件

  14. 把以下几项打开:

  15. sonar.jdbc.username:                       sonar     //授权连接数据库的帐号

  16. sonar.jdbc.password:                       sonar     //连接数据库密码

  17. #----- MySQL 5.x/6.x

  18. # Comment the embedded database and uncomment the following line to use MySQL

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

  20. # Optional properties

  21. sonar.jdbc.driverClassName:                com.mysql.jdbc.Driver

  22. 3.启动sonar

  23. # sonar/bin/linux-x86-64/sonar.sh start

二、其次介绍一下Hudson

  Hudson是一种革命性的开放源码 CI 服务器,它具有强大的插件框架 ,所以很容易添加特性,例如添加 tomcat 插件后,可以方将 build 好的 war 包方便的部署到 Tomcat 里。他的整个流程大致如下图所示。

230251229.png

  Hudson是一个调度管理接口,通过调度Maven执行构建和返回,通过调用sonar进行对源码开发归法进行检查,而Sonar又可以利用插件进行检查,这样就能更方便的进行有机结合。

  然后通过浏览器可以查看构建结果和记录,由于Hudson可以把war包放到tomcat中,所以只需要一个tomcat环境即可实现浏览。

配置Hudson

 
  
 
  
  1. 1.安装jdk环境

  2. # cd /usr/local

  3. # chmod +x jdk-6u25-linux-x64.bin  

  4. # ln -sv jdk1.6.0_25 java

  5. # vim /etc/profile  添加java环境变量

  6. #set jdk env

  7. JAVA_HOME=/usr/local/java

  8. CLASSPATH=$JAVA_HOME/lib/tools.jar

  9. PATH=$JAVA_HOME/bin:$PATH

  10. export JAVA_HOME CLASSPATH PATH

  11. 2.解压安装tomcat  

  12. # tar xf apache-tomcat-6.0.36.tar.gz  

  13. # ln -sv apache-tomcat-6.0.36 tomcat  

  14. # vim /etc/profile 添加tomcat的环境变量  

  15. #set tomcat env  

  16. export TOMCAT_HOME=/usr/local/tomcat  

  17. export BASE_HOME=/usr/local/tomcat  

  18. # source /etc/profile

  19. # $TOMCAT_HOME/bin/startup.sh start

  20. vim /etc/init.d/tomcat添加一下内容

  21. #chkconfig: 2345 63 37

    #description:tomcat server

    TOMCAT_HOME=/usr/local/tomcat

    BASE_HOME=/usr/local/tomcat

    JAVA_HOME=/usr/local/java

    CATALINA_HOME=/usr/local/tomcat


  22. 启动tomcat即可。  

  23. 3.下载hudson  

  24. # wget http://java.net/downloads/hudson/war/hudson-2.2.1.war  

  25. # mv hudson-2.2.1.war /usr/local/tomcat/webapps/hudson.war  

  26. 然后重新启动tomcat  

  27. #/usr/local/tomcat/startup.sh start  

  28. 然后在浏览器上输入http://IP:8080/hudson即可访问  

访问如下图所示:

231356132.png

下一篇博客将介绍如何进行代码检查和构建整个过程。

参考文档:http://docs.codehaus.org/display/SONAR/Documentation