首页 数据库 mysql教程 集成环境搭建及遇到的问题 jetty8 hudson2.2.0 sonar2.11 mysql5

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

Jun 07, 2016 pm 03:47 PM
介绍 搭建 概述 环境 详细 遇到 问题 集成

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

一、概述

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

二、背景知识

为什么要集成环境。当然是为了代码质量。通过不断地集成来提高代码的质量。检查代码质量有两种方式。第一种是,静态测试:包括: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: 'xF2xB7xB5xBBxEFxBF...' for column 'data' at row 1   ....  Caused by: java.sql.SQLException: Incorrect string value: 'xF2xB7xB5xBBxEFxBF...' 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
  • 作者:就职于 阿里巴巴 封神


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PyCharm新手指南:替换功能全面解析 PyCharm新手指南:替换功能全面解析 Feb 25, 2024 am 11:15 AM

PyCharm是一款功能强大的Python集成开发环境,具有丰富的功能和工具,能够极大地提高开发效率。其中,替换功能是开发过程中经常用到的功能之一,能够帮助开发者快速修改代码并提高代码质量。本文将详细介绍PyCharm的替换功能,并结合具体的代码示例,帮助新手更好地掌握和使用该功能。替换功能简介PyCharm的替换功能可以帮助开发者在代码中快速替换指定的文本

雾锁王国能野地搭建筑吗 雾锁王国能野地搭建筑吗 Mar 07, 2024 pm 08:28 PM

玩家在雾锁王国中进行游戏时可以收集不同的材料用来建造建筑,有很多玩家想知道野地搭建筑吗,雾锁王国能野地是不能搭建筑的,必须要在祭坛的范围内才可以搭建。雾锁王国能野地搭建筑吗答:不能。1、雾锁王国能野地是不能搭建筑的。2、建筑必须要在祭坛的范围内才可以搭建。3、玩家可以自行放置灵火祭坛,但一旦离开了范围,将无法进行建筑搭建。4、我们也可以直接在山上挖个洞当做我们的家,这样不用耗建筑材料。5、玩家自己搭建的建筑中,存在舒适度机制,也就是说,内饰越好,舒适度越高。6、高舒适度将为玩家带来属性加成,例如

Oracle API集成策略解析:实现系统间无缝通信 Oracle API集成策略解析:实现系统间无缝通信 Mar 07, 2024 pm 10:09 PM

OracleAPI集成策略解析:实现系统间无缝通信,需要具体代码示例在当今数字化时代,企业内部系统之间需要相互通信和数据共享,而OracleAPI就是帮助实现系统间无缝通信的重要工具之一。本文将从OracleAPI的基本概念和原理入手,探讨API集成的策略,最终给出具体的代码示例帮助读者更好地理解和应用OracleAPI。一、OracleAPI基本

什么是狗狗币 什么是狗狗币 Apr 01, 2024 pm 04:46 PM

狗狗币是一种基于互联网模因创建的加密货币,没有固定的供应上限,交易时间快速,交易费用低,拥有庞大的模因社区。用途包括小额交易、打赏和慈善捐赠。然而,其无限供应量、市场波动和作为笑话币的地位也带来风险和担忧。什么是狗狗币?狗狗币是一种基于互联网模因和笑话创建的加密货币。起源和历史:2013年12月,两位软件工程师BillyMarkus和JacksonPalmer创建狗狗币。灵感来自于当时流行的"Doge"模因,一个以一只柴犬为特征的滑稽照片加上破碎英语。特征和优势:无限供应量:与比特币等其他加密货

网上查成绩平台介绍(方便快捷的成绩查询工具) 网上查成绩平台介绍(方便快捷的成绩查询工具) Apr 30, 2024 pm 08:19 PM

快捷的成绩查询工具、这为学生和家长提供了更方便,随着互联网的发展,越来越多的教育机构和学校开始提供网上查成绩的服务。让您轻松掌握孩子的学业进展,本文将介绍几个常用的网上查成绩平台。一、便捷——通过网上查成绩平台可以随时随地查询孩子的考试成绩家长可以方便地随时查询孩子的考试成绩,通过在电脑或手机上登录相应的网上查成绩平台。只要有网络连接、无论是在工作中还是在外出时、家长都可以及时了解孩子的学习情况,对孩子进行针对性地辅导和帮助。二、多种功能——除了成绩查询,还提供课程表、考试安排等信息许多网上查成

三星S24ai功能详细介绍 三星S24ai功能详细介绍 Jun 24, 2024 am 11:18 AM

2024是AI手机的元年,越来越多的手机集成了多项ai功能,通过ai智能技术的赋能,让我们的手机使用更加高效便捷。近日,年初发布的GalaxyS24系列再度提升了其生成式AI的体验,下面下详细的功能介绍,一起来看看吧。一、生成式AI深度赋能三星GalaxyS24系列通过GalaxyAI的赋能,带来了诸多智能化应用,这些功能与SamsungOneUI6.1深度集成,让用户可以随时获得便利的智能体验,显着提升了手机的使用效率和便捷性。由GalaxyS24系列首创的即圈即搜功能是亮点之一,用户只需长按

霓虹深渊第八色武器介绍 霓虹深渊第八色武器介绍 Mar 31, 2024 pm 03:51 PM

第八色是霓虹深渊中的一把武器,很多的玩家都想了解一下关于武器第八色额弹道、武器强度好玩法这些内容。那么下面就让我们一起来看看霓虹深渊第八色武器弹道、武器强度、武器玩法详细攻略吧。霓虹深渊第八色详细攻略武器介绍:巫师的秘密武器!武器攻速:正常武器强度:适中武器玩法:第八色的攻击方式为三次单体攻击然后发射一道射线。弹道展示:

Python Tkinter 大显神通:打造惊艳 GUI 应用程序 Python Tkinter 大显神通:打造惊艳 GUI 应用程序 Mar 24, 2024 am 09:11 AM

Tkinter是python中一个强大的GUI库,可用于创建跨平台的桌面应用程序。凭借其易用性和广泛的功能,它为构建用户界面、处理事件和管理布局提供了各种工具。创建GUI窗口要创建GUI窗口,需要使用Tkinter.Tk()方法。此方法返回一个Tk()对象,表示应用程序的主窗口。窗口可以使用title()方法设置标题,并使用geometry()方法设置窗口大小和位置。importtkinterastkroot=tk.Tk()root.title("我的第一个Tkinter应用程序")root.g

See all articles