首頁 資料庫 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: '\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
  • 作者:就职于 阿里巴巴 封神


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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的替換功能可以幫助開發者在程式碼中快速替換指定的文本

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"模因,一個以一隻柴犬為特徵的滑稽照片加上破碎英語。特徵與優勢:無限供應量:與比特幣等其他加密貨

霧鎖王國能野地搭建築嗎 霧鎖王國能野地搭建築嗎 Mar 07, 2024 pm 08:28 PM

玩家在霧鎖王國中進行遊戲時可以收集不同的材料用來建造建築,有很多玩家想知道野地搭建築嗎,霧鎖王國能野地是不能搭建築的,必須要在祭壇的範圍內才可以搭建。霧鎖王國能野地搭建築嗎答:不能。 1.霧鎖王國能野地是不能搭建築的。 2、建築必須要在祭壇的範圍內才可以搭建。 3、玩家可以自行放置靈火祭壇,但一旦離開了範圍,將無法進行建築搭建。 4.我們也可以直接在山上挖個洞當做我們的家,這樣不用耗建築材料。 5.玩家自己搭建的建築中,有舒適度機制,也就是說,內裝越好,舒適度越高。 6.高舒適度將為玩家帶來屬性加成,例如

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

第八色是霓虹深淵中的一把武器,很多的玩家都想了解一下關於武器第八色額彈道、武器強度好玩法這些內容。那麼下面就讓我們一起來看看霓虹深淵第八色武器彈道、武器強度、武器玩法詳細攻略吧。霓虹深淵第八色詳細攻略武器介紹:巫師的秘密武器!武器攻速:正常武器強度:適中武器玩法:第八色的攻擊方式為三次單體攻擊然後發射一道射線。彈道展示:

網上查成績平台介紹(方便快速的成績查詢工具) 網上查成績平台介紹(方便快速的成績查詢工具) 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系列首创的即圈即搜功能是亮点之一,用户只需长按

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