一、概述 笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。 二、背景知识 为什么要集成
一、概述
笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。
二、背景知识
为什么要集成环境。当然是为了代码质量。通过不断地集成来提高代码的质量。检查代码质量有两种方式。第一种是,静态测试:包括:codereview、静态代码检测技术等;第二种是,动态测试:包括:单元测试,接口测试,UI测试,人工点页面等测试。静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。
三、软件介绍及准备
我们主要用到 hudson、sonar、Jetty 、MySQL开源软件。这些全部都是开源软件。我简短介绍下,大家可以到它们的主页去详细了解。
- Hudson 是一个可扩展的持续集成引擎。主要用于持续、自动地构建/测试软件项目。
- Sonar是一个开源平台,用于管理Java源代码的质量。从 Sonar 1.6 版本开始,Sonar从一个质量数据报告工具,转变成为现在的代码质量管理平台。
- Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
- MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。现在有许多大公司也考虑这一构架。
三、架构介绍
我们需要三台逻辑上服务器,当然都可以在一个机器上面。就是 HUDSON、SONAR、MYSQL。关系如下图所示:
我们架构图大致如下所示:
HUDSON与SONAR集成起来是用HUDSON上面的一个sonar插件。所有的命令都是用mvn来做的。
三、软件准备及相关系统配置(所有的下载地址都是目前有效的,以后就不保证了哦)
- JAVA、MAVEN请先配置好。
- JETTY,我们需要从http://wiki.eclipse.org/Jetty/Howto/Install_Jetty下载,下载地址如下。无需配置。
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
- HUDSON,http://hudson-ci.org/ 因为是一个war包,我们也不可在代码中配置,配置都在页面。需要把hudson-2.1.2.war重名为hudson.war,再拷到jetty的webapps目录下。
wget http://java.net/projects/hudson/downloads/download/war/hudson-2.1.2.war
- SONAR,http://www.sonarsource.org/downloads/ 需要配置conf/sonar.properties文件。
-
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
- MYSQL,这里需要你对mysql数据库有一定的认识。知道基本的编码问题及访问权限问题。以下简单列出一些配置。
-
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 等创建 数据库等。
五、HUDSON相关配置及编译流程
把相关服务启动后,包括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的配置:
- 下载相关的最新版插件 Hudson Cobertura plugin (目前1.1)、Jenkins Sonar Plugin(目前1.7.1)。
- 在hudson系统设置中指定好相关的JAVA、MAVEN,也可以在 .bash_profile 文件中配置JAVA_HOME、MAVEN_HOME
- 配置好sonar插件的一些属性
-
- 新建任务,设置 ,配置如下(只有一些重要的):
- Source Code Management选择svn,填写好分支。
- Build Triggers 做好适合自己的触发模式
- Build 填写好 如下图所示:
- Post-build Actions里面设置后续的操作:
- Publish Cobertura Coverage Report :Cobertura xml report pattern填写他推荐的:**/target/site/cobertura/coverage.xml 。其他的不变
-
Sonar:POM填写你的pom.xml
- Source Code Management选择svn,填写好分支。
- 恭喜您,做完以上的一些,大致就可以跑起来了。也能在mysql数据库中看到sonar的表。如果还没有成功请看看常见问题列表。如果没有,请留言,我尽力帮助您。
六、常见的一些问题
- 找不到mysql的驱动。
- 这个需要在sonar配置mysql数据库。上面已经配置了。
- 源码在存入数据库的时候报错。错误为:[ERROR] Incorrect string value: '\xF2\xB7\xB5\xBB\xEF\xBF...' for column 'data' at row 1 .... Caused by: java.sql.SQLException: Incorrect string value: '\xF2\xB7\xB5\xBB\xEF\xBF...' for column 'data' at row 1
- 这个错误就是这些字符不能插入到数据库中。这个肯定就是编码的问题了。源文件不能插入到数据库中。
- 过程为:
- 从本地磁盘中读出 文件,此涉及到解码。如果存储的文件编码为GBK那么读文件的时候也要设置成GBK。
- 把内存中的对象转化成流存储到数据中。此涉及到网络传输的问题。我们必须编码与解码一致。如:client是utf8那么数据库也要用这个utf8
- 这个问题大部分的文件是,要读取文件的时候,解码是错误的。我们可以用 -Dsonar.sourceEncoding=GBK 来设定。当然也可能是别的原因,这个需要自己多加分析。
- cobertura已经跑完了单元测试,soanr又跑一次单元测试。我们希望只跑一次单元测试。并且结果在hudson上面展示。sonar上面也可以展示。
- 我们可以用 cobertura 先跑单元测试,后在跑sonar 的时候 指定参数:-Dsonar.dynamicAnalysis=reuseReports 服用以前的报告。
- cobertura不能统计单元测试覆盖率。错误为:No coverage results were found using the pattern '**/target/site/cobertura/coverage.xml' relative to '/home/hudson/.hudson/jobs/finance/workspace'.
- 这个需要设置 -Dcobertura.report.format=xml 这个参数,这个也是 cobertura 的参数,默认值为html.
七、参考资料
- 官方文档搭建文档:http://docs.codehaus.org/display/SONAR/Hudson+and+Jenkins+Plugin
- cobertura地址:http://mojo.codehaus.org/cobertura-maven-plugin/cobertura-mojo.html (cobertura.report.format = xml )
- sonar配置项:http://docs.codehaus.org/display/SONAR/Advanced+parameters (sonar.sourceEncoding = gbk sonar.dynamicAnalysis = reuseReports)
- 跳过测试:http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html(mvn install -Dmaven.test.skip=true maven.test.skip)http://maven.apache.org/maven-1.x/plugins/test/properties.html(maven.test.skip )
- surefire:http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html
- mysql服务器参数:http://dev.mysql.com/doc/refman/5.5/en/server-options.html
- hudson相关文档:http://hudson-ci.org/docs/index.html
八、版权申明
- http://blog.csdn.net/bxyz1203/article/details/6980174
- 作者:就职于 阿里巴巴 封神

innodbbufferpool은 데이터와 인덱싱 페이지를 캐싱하여 디스크 I/O를 줄여 데이터베이스 성능을 향상시킵니다. 작업 원칙에는 다음이 포함됩니다. 1. 데이터 읽기 : BufferPool의 데이터 읽기; 2. 데이터 작성 : 데이터 수정 후 BufferPool에 쓰고 정기적으로 디스크로 새로 고치십시오. 3. 캐시 관리 : LRU 알고리즘을 사용하여 캐시 페이지를 관리합니다. 4. 읽기 메커니즘 : 인접한 데이터 페이지를 미리로드합니다. Bufferpool을 크기를 조정하고 여러 인스턴스를 사용하여 데이터베이스 성능을 최적화 할 수 있습니다.

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

MySQL은 데이터 저장, 관리 및 분석에 적합한 강력한 오픈 소스 데이터베이스 관리 시스템이기 때문에 학습 할 가치가 있습니다. 1) MySQL은 SQL을 사용하여 데이터를 작동하고 구조화 된 데이터 관리에 적합한 관계형 데이터베이스입니다. 2) SQL 언어는 MySQL과 상호 작용하는 열쇠이며 CRUD 작업을 지원합니다. 3) MySQL의 작동 원리에는 클라이언트/서버 아키텍처, 스토리지 엔진 및 쿼리 최적화가 포함됩니다. 4) 기본 사용에는 데이터베이스 및 테이블 작성이 포함되며 고급 사용량은 Join을 사용하여 테이블을 결합하는 것과 관련이 있습니다. 5) 일반적인 오류에는 구문 오류 및 권한 문제가 포함되며 디버깅 기술에는 구문 확인 및 설명 명령 사용이 포함됩니다. 6) 성능 최적화에는 인덱스 사용, SQL 문의 최적화 및 데이터베이스의 정기 유지 보수가 포함됩니다.

MySQL은 초보자가 데이터베이스 기술을 배우는 데 적합합니다. 1. MySQL 서버 및 클라이언트 도구를 설치하십시오. 2. SELECT와 같은 기본 SQL 쿼리를 이해하십시오. 3. 마스터 데이터 작업 : 데이터를 만들고, 삽입, 업데이트 및 삭제합니다. 4. 고급 기술 배우기 : 하위 쿼리 및 창 함수. 5. 디버깅 및 최적화 : 구문 확인, 인덱스 사용, 선택*을 피하고 제한을 사용하십시오.

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.

MySQL은 웹 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 주요 기능에는 다음이 포함됩니다. 1. 다른 시나리오에 적합한 InnoDB 및 MyISAM과 같은 여러 스토리지 엔진을 지원합니다. 2.로드 밸런싱 및 데이터 백업을 용이하게하기 위해 마스터 슬레이브 복제 기능을 제공합니다. 3. 쿼리 최적화 및 색인 사용을 통해 쿼리 효율성을 향상시킵니다.

SQL은 MySQL 데이터베이스와 상호 작용하여 데이터 첨가, 삭제, 수정, 검사 및 데이터베이스 설계를 실현하는 데 사용됩니다. 1) SQL은 Select, Insert, Update, Delete 문을 통해 데이터 작업을 수행합니다. 2) 데이터베이스 설계 및 관리에 대한 생성, 변경, 삭제 문을 사용하십시오. 3) 복잡한 쿼리 및 데이터 분석은 SQL을 통해 구현되어 비즈니스 의사 결정 효율성을 향상시킵니다.

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
