集成环境搭建及遇到的问题 jetty8+hudson2.2.0+sonar2.11+mysql5
一、概述 笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。 二、背景知识 为什么要集成
一、概述
笔者将详细介绍集成环境搭建及需要注意的事项。此些点都摸索了许多天完成的。一些问题是在搭建过程中实际遇到过的。当然大多数都是环境配置的问题。如果遇到集成环境的一些问题,欢迎和笔者联系。笔者很愿意与大家交流。
二、背景知识
为什么要集成环境。当然是为了代码质量。通过不断地集成来提高代码的质量。检查代码质量有两种方式。第一种是,静态测试:包括: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
Nach dem Login kopieren- 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
Nach dem Login kopieren- SONAR,http://www.sonarsource.org/downloads/ 需要配置conf/sonar.properties文件。
-
wget http://dist.sonar.codehaus.org/sonar-2.11.zip unzip sonar-2.11.zip
Nach dem Login kopieren要注意,不可重复,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
Nach dem Login kopieren - 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
Nach dem Login kopieren修改配置: 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 等创建 数据库等。
Nach dem Login kopieren
五、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
- 作者:就职于 阿里巴巴 封神

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung mit umfangreichen Funktionen und Tools, die die Entwicklungseffizienz erheblich verbessern können. Unter diesen ist die Ersetzungsfunktion eine der im Entwicklungsprozess häufig verwendeten Funktionen, die Entwicklern helfen kann, den Code schnell zu ändern und die Codequalität zu verbessern. In diesem Artikel wird die Ersetzungsfunktion von PyCharm ausführlich vorgestellt, kombiniert mit spezifischen Codebeispielen, um Anfängern zu helfen, diese Funktion besser zu beherrschen und zu verwenden. Einführung in die Ersetzungsfunktion Die Ersetzungsfunktion von PyCharm kann Entwicklern dabei helfen, bestimmten Text im Code schnell zu ersetzen

Analyse der Oracle API-Integrationsstrategie: Um eine nahtlose Kommunikation zwischen Systemen zu erreichen, sind spezifische Codebeispiele erforderlich. Im heutigen digitalen Zeitalter müssen interne Unternehmenssysteme miteinander kommunizieren und Daten austauschen, und Oracle API ist eines der wichtigen Tools, um eine nahtlose Kommunikation zu erreichen Kommunikation zwischen Systemen. Dieser Artikel beginnt mit den grundlegenden Konzepten und Prinzipien von OracleAPI, untersucht API-Integrationsstrategien und gibt schließlich spezifische Codebeispiele, um den Lesern zu helfen, OracleAPI besser zu verstehen und anzuwenden. 1. Grundlegende Oracle-API

Spieler können beim Spielen im Mistlock-Königreich verschiedene Materialien sammeln. Viele Spieler möchten wissen, ob Gebäude im Mistlock-Königreich nicht in der Wildnis gebaut werden können. . Können im Mistlock Kingdom Gebäude in freier Wildbahn gebaut werden? 1. In den wilden Gebieten des Mist Lock Kingdom können keine Gebäude gebaut werden. 2. Das Gebäude muss im Rahmen des Altars errichtet werden. 3. Spieler können den Geisterfeueraltar selbst errichten, aber sobald sie den Bereich verlassen, können sie keine Gebäude mehr errichten. 4. Wir können als Zuhause auch direkt ein Loch in den Berg graben, sodass wir keine Baumaterialien verbrauchen müssen. 5. In den von den Spielern selbst gebauten Gebäuden gibt es einen Komfortmechanismus, d. h. je besser die Innenausstattung, desto höher der Komfort. 6. Hoher Komfort bringt den Spielern Attributsboni, wie z

Dogecoin ist eine Kryptowährung, die auf Internet-Memes basiert, ohne feste Angebotsobergrenze, schnelle Transaktionszeiten, niedrige Transaktionsgebühren und eine große Meme-Community. Zu den Verwendungszwecken gehören kleine Transaktionen, Trinkgelder und wohltätige Spenden. Das unbegrenzte Angebot, die Marktvolatilität und der Status als Scherzmünze bringen jedoch auch Risiken und Bedenken mit sich. Was ist Dogecoin? Dogecoin ist eine Kryptowährung, die auf Internet-Memes und Witzen basiert. Ursprung und Geschichte: Dogecoin wurde im Dezember 2013 von zwei Software-Ingenieuren, Billy Markus und Jackson Palmer, erstellt. Inspiriert vom damals beliebten „Doge“-Meme, einem komischen Foto mit einem Shiba Inu mit gebrochenem Englisch. Funktionen und Vorteile: Unbegrenztes Angebot: Im Gegensatz zu anderen Kryptowährungen wie Bitcoin

2024 ist das erste Jahr der KI-Mobiltelefone. Dank der intelligenten KI-Technologie können unsere Mobiltelefone effizienter und bequemer genutzt werden. Kürzlich hat die zu Beginn des Jahres erschienene Galaxy S24-Serie ihr generatives KI-Erlebnis noch einmal verbessert. Werfen wir einen Blick auf die detaillierte Funktionseinführung unten. 1. Umfassende Stärkung der generativen KI. Die Samsung Galaxy S24-Serie hat durch die Stärkung der Galaxy AI viele intelligente Anwendungen hervorgebracht. Diese Funktionen sind tief in Samsung One UI6.1 integriert, sodass Benutzer jederzeit ein komfortables intelligentes Erlebnis erhalten Verbesserung der Leistung von Mobiltelefonen. Zu den Highlights der Galaxy S24-Serie gehört die Sofortsuchfunktion, die Nutzer einfach gedrückt halten müssen

Die achte Farbe ist eine Waffe in Neon Abyss. Viele Spieler möchten etwas über die Ballistik der achten Farbe der Waffe wissen und wissen, wie man mit der Waffenstärke spielt. Werfen wir also einen Blick auf die detaillierte Anleitung zur Flugbahn, Waffenstärke und dem Waffen-Gameplay der achten Farbe von Neon Abyss. Neon Abyss Color 8 Detaillierte Anleitung Waffeneinführung: Die Geheimwaffe des Zauberers! Waffenangriffsgeschwindigkeit: Normal Waffenstärke: Mäßig Waffenspiel: Die Angriffsmethode der achten Farbe besteht aus drei Einzelzielangriffen und dem anschließenden Abfeuern eines Strahls. Ballistische Darstellung:

Schnelle Abfragetools bieten mehr Komfort für Schüler und Eltern. Mit der Entwicklung des Internets bieten immer mehr Bildungseinrichtungen und Schulen Online-Dienste zur Punkteüberprüfung an. Damit Sie den schulischen Fortschritt Ihres Kindes leicht verfolgen können, werden in diesem Artikel einige häufig verwendete Online-Plattformen zur Notenüberprüfung vorgestellt. 1. Bequemlichkeit – Eltern können die Testergebnisse ihrer Kinder jederzeit und überall über die Online-Ergebnisprüfungsplattform überprüfen. Eltern können die Testergebnisse ihrer Kinder jederzeit bequem überprüfen, indem sie sich auf einem Computer oder Mobiltelefon bei der entsprechenden Online-Ergebnisprüfungsplattform anmelden. Solange eine Internetverbindung besteht, sei es am Arbeitsplatz oder beim Ausgehen, können Eltern den Lernstand ihrer Kinder verfolgen und ihre Kinder gezielt beraten und unterstützen. 2. Mehrere Funktionen – zusätzlich zur Notenabfrage stehen auch Informationen wie Kurspläne und Prüfungstermine zur Verfügung.

Tkinter ist eine leistungsstarke GUI-Bibliothek in Python, mit der plattformübergreifende Desktop-Anwendungen erstellt werden können. Mit seiner Benutzerfreundlichkeit und seinem breiten Funktionsumfang bietet es verschiedene Tools zum Erstellen von Benutzeroberflächen, zum Verwalten von Ereignissen und zum Verwalten von Layouts. Erstellen eines GUI-Fensters Um ein GUI-Fenster zu erstellen, müssen Sie die Methode Tkinter.Tk() verwenden. Diese Methode gibt ein Tk()-Objekt zurück, das das Hauptfenster der Anwendung darstellt. Ein Fenster kann mit der Methode title() einen Titel und mit der Methode Geometry() die Fenstergröße und -position festlegen. importtkinterrastkroot=tk.Tk()root.title("Meine erste Tkinter-Anwendung")root.g
