一、概述 笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。 二、背景知识 为什么要集成
笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。
为什么要集成环境。当然是为了代码质量。通过不断地集成来提高代码的质量。检查代码质量有两种方式。第一种是,静态测试:包括:codereview、静态代码检测技术等;第二种是,动态测试:包括:单元测试,接口测试,UI测试,人工点页面等测试。静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。
我们主要用到 hudson、sonar、Jetty 、MySQL开源软件。这些全部都是开源软件。我简短介绍下,大家可以到它们的主页去详细了解。
我们需要三台逻辑上服务器,当然都可以在一个机器上面。就是 HUDSON、SONAR、MYSQL。关系如下图所示:
我们架构图大致如下所示:
HUDSON与SONAR集成起来是用HUDSON上面的一个sonar插件。所有的命令都是用mvn来做的。
wget http://dist.codehaus.org/jetty/jetty-hightide-8.0.0/jetty-hightide-8.0.0.v20110901.tar.gz tar xfz jetty-hightide-8.0.0.v20110901.tar.gz
wget http://java.net/projects/hudson/downloads/download/war/hudson-2.1.2.war
wget http://dist.sonar.codehaus.org/sonar-2.11.zip unzip sonar-2.11.zip
要注意,不可重复,url编码设置为utf8 sonar.jdbc.username: sonar sonar.jdbc.password: sonar sonar.jdbc.url: jdbc:mysql://10.20.155.8:3306/sonar?useUnicode=true&characterEncoding=utf8 sonar.jdbc.driverClassName: com.mysql.jdbc.Driver sonar.jdbc.validationQuery: select 1
su root wget http://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-5.5.17-1.linux2.6.x86_64.tar/from/http://ftp.iij.ad.jp/pub/db/mysql/ tar xf MySQL-5.5.17-1.linux2.6.i386.tar rpm -i MySQL-server-5.5.17-1.linux2.6.x86_64.rpm rpm -i MySQL-client-5.5.17-1.linux2.6.x86_64.rpm
修改配置: cp /usr/share/doc/MySQL-server-5.5.17/my-large.cnf /etc/my.cnf vi /etc/my.cnf 在[client]下面加上 default-character-set = utf8 在[mysqld]下面加上 character-set-server=utf8 init_connect = 'SET NAMES utf8' 启动:/etc/init.d/mysql start 登陆:mysql -h localhost -u root -p 修改密码:/usr/bin/mysqladmin -u root -h vm-qa-crm-155-8.hst.bjc.kfc.alidc.net password 'new-password' mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql> create database sonar 也可以用 Navicat for MySQL 等创建 数据库等。
把相关服务启动后,包括jetty、sonar、mysql。就可以访问hudson(http://10.20.155.8:8080/hudson/)与sonar (http://10.20.155.8:9000/)。
大致我们的配置流程与每个阶段运行的代码(这些代码都是配置在hudson上面的,下面会给出配置的位置):
- 准备测试环境:mvn -f all/pom.xml clean install -Dmaven.test.skip
- 单元测试: mvn -f all/pom.xml cobertura:cobertura -Dcobertura.report.format=xml
- 静态检测: mvn -all/pom.xml -Dsonar.sourceEncoding=GBK -Dsonar.dynamicAnalysis=reuseReports -e -B sonar:sonar -Dsonar.jdbc.driver=com.mysql.jdbc.Driver -Dsonar.jdbc.url=jdbc:mysql://10.20.155.8:3306/sonar?autoReconnect=true&useUnicode=true&characterEncoding=utf8 ******** ******** -Dsonar.host.url=http://10.20.155.8:9000
HUDSON的配置: