search
HomeDatabaseMysql Tutorial集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5
集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5Jun 07, 2016 pm 03:47 PM
introducebuildOverviewenvironmentdetailedmeetquestionintegrated

一、概述 笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。 二、背景知识 为什么要集成

一、概述

笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。

二、背景知识

为什么要集成环境。当然是为了代码质量。通过不断地集成来提高代码的质量。检查代码质量有两种方式。第一种是,静态测试:包括: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。关系如下图所示:

集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5

我们架构图大致如下所示:

集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5


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上面的,下面会给出配置的位置):

集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5

  • 准备测试环境: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插件的一些属性
  • 集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5
  •  新建任务,设置 ,配置如下(只有一些重要的):
    • Source Code Management选择svn,填写好分支。
    • Build Triggers 做好适合自己的触发模式
    • Build 填写好 如下图所示:
    • 集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5
    • Post-build Actions里面设置后续的操作:
      • Publish Cobertura Coverage Report :Cobertura xml report pattern填写他推荐的:**/target/site/cobertura/coverage.xml 。其他的不变
      • Sonar:POM填写你的pom.xml
  • 恭喜您,做完以上的一些,大致就可以跑起来了。也能在mysql数据库中看到sonar的表。如果还没有成功请看看常见问题列表。如果没有,请留言,我尽力帮助您。

六、常见的一些问题

  1. 找不到mysql的驱动。
    1. 这个需要在sonar配置mysql数据库。上面已经配置了。
  2. 源码在存入数据库的时候报错。错误为:[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 来设定。当然也可能是别的原因,这个需要自己多加分析。
  3. cobertura已经跑完了单元测试,soanr又跑一次单元测试。我们希望只跑一次单元测试。并且结果在hudson上面展示。sonar上面也可以展示。
    1. 我们可以用 cobertura 先跑单元测试,后在跑sonar 的时候 指定参数:-Dsonar.dynamicAnalysis=reuseReports 服用以前的报告。
  4. cobertura不能统计单元测试覆盖率。错误为:No coverage results were found using the pattern '**/target/site/cobertura/coverage.xml' relative to '/home/hudson/.hudson/jobs/finance/workspace'.
    1. 这个需要设置 -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
  • 作者:就职于 阿里巴巴 封神


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
机器学习中的集成方法概述机器学习中的集成方法概述Apr 15, 2023 pm 01:52 PM

想象一下,你正在网上购物,你发现有两家店铺销售同一种商品,它们的评分相同。然而,第一家只有一个人评分,第二家有100人评分。您会更信任哪个评分呢?最终您会选择购买哪家的商品呢?大多数人的答案很简单。100个人的意见肯定比只有一个人的意见更值得信赖。这被称为“群众的智慧”,这也是集成方法有效的原因。集成方法通常,我们只从训练数据中创建一个学习者(学习者=训练模型)(即,我们只在训练数据上训练一个机器学习模型)。而集成方法是让多个学习者解决同一个问题,然后将他们组合在一起。这些学习者被称为基础学习者

PHP与ETL工具的集成PHP与ETL工具的集成May 16, 2023 am 11:30 AM

随着企业数据变得越来越庞大和复杂,数据处理和分析的需求变得愈发迫切。为了解决这一问题,ETL(抽取、转换、加载)工具逐渐成为了企业数据处理和分析的重要工具。PHP作为一门流行的Web开发语言,也可以通过与ETL工具的集成来提高数据处理和分析的效率和精度。ETL工具介绍ETL工具是一类能够提取数据、进行数据转换,并将数据加载到目标系统中的软件。其全称是抽取-转

Copilot 集成:在 SharePoint 和 Dynamics 365 客户服务中的合作Copilot 集成:在 SharePoint 和 Dynamics 365 客户服务中的合作Aug 03, 2023 pm 09:21 PM

Microsoft今天宣布了Dynamics365客户服务中SharePoint与Copilot集成的早期预览版。这种集成将使客户服务代理能够访问更广泛的知识来源,从而提高生产力并改善客户互动。目前,Dynamics365客户服务中的Copilot利用内部知识库为客户服务代理提供指导。通过建议聊天和草稿电子邮件内容,Copilot已成为提高客户服务团队生产力的关键工具。但是,客户反馈表明该工具需要利用来自外部资源(如SharePoint)的知识。SharePoint协同驾驶集成为了响应这些反馈,

Java集成阿里云OSS实现文件上传功能Java集成阿里云OSS实现文件上传功能Jul 06, 2023 pm 04:31 PM

Java集成阿里云OSS实现文件上传功能阿里云OSS(ObjectStorageService)是一种简单高效、安全可靠的云存储服务,提供了海量、安全、低成本、高可靠的云存储解决方案。通过使用阿里云OSS,我们可以方便地将文件存储到云端,实现文件的上传、下载、管理等功能。本文将介绍如何使用Java语言集成阿里云OSS,实现文件上传功能。注册阿里云OSS账

Django框架中集成WebSocketDjango框架中集成WebSocketJun 17, 2023 pm 12:00 PM

WebSocket是一种实时通信的协议,比起HTTP协议更加轻量级和高效,可以实现类似于聊天室、实时通知等功能。在Django中,我们可以通过利用DjangoChannels库将WebSocket集成到框架中,实现实时通信。首先,我们需要安装Django和DjangoChannels库。可以通过pip工具进行安装,也可以使用conda等其他包管理工具。p

如何在Java项目中集成并使用百度AI接口的智能图像识别功能如何在Java项目中集成并使用百度AI接口的智能图像识别功能Aug 12, 2023 pm 08:31 PM

如何在Java项目中集成并使用百度AI接口的智能图像识别功能引言:随着人工智能的快速发展,图像识别技术逐渐渗透到各个领域,并提供了许多应用场景。百度AI接口提供了强大的图像识别功能,可以帮助我们在Java项目中实现图像的智能识别。本文将介绍如何在Java项目中集成并使用百度AI接口的智能图像识别功能,并提供相关的代码示例。步骤一:注册百度AI接口账号首先,我

Vue.js与Swift语言的集成,实现高级iOS应用的开发和测试的建议和技术指导Vue.js与Swift语言的集成,实现高级iOS应用的开发和测试的建议和技术指导Jul 29, 2023 pm 01:06 PM

Vue.js与Swift语言的集成,实现高级iOS应用的开发和测试的建议和技术指导引言移动应用的开发和测试是一个复杂而且需要专业技术的领域。两个主要的技术栈分别是前端的Vue.js和iOS平台的Swift语言。本文将介绍如何将Vue.js和Swift语言进行集成,以便开发和测试高级的iOS应用。Vue.js的基本原理和功能Vue.js是一种用于构建用户界面的

PHP与Cassandra的集成PHP与Cassandra的集成May 15, 2023 pm 06:51 PM

随着大数据时代的到来以及数据增长量的不断增加,Cassandra已经成为了一种流行的分布式数据库技术。而PHP语言作为最流行的Web编程语言之一,则是Web开发领域的主流技术之一,如何让PHP和Cassandra进行无缝的集成呢?安装Cassandra在开始使用Cassandra之前,需要先安装Cassandra。Cassandra可以在官网上下载到最新的版

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)