`
DigitalSonic
  • 浏览: 210943 次
社区版块
存档分类
最新评论
阅读更多

最近正好有机会在工作中推广持续集成,就借机在项目中做了一些应用,起初选择了老牌的CruiseControl ,不过在实际的使用中总感觉CruiseControl在多模块的Maven项目方面有些力不从心,而且结果报表和使用界面上也不是让我很满意,配置起来还有点麻烦,也许TW的几个核心贡献者都把精力放在Cruise上了吧……

在一个项目结束后,决定抛弃CruiseControl,在新项目里试试Hudson ,经过几天的接触,有种相见恨晚的感觉。Hudson几乎就是完全符合我对持续集成工具的要求,有些地方甚至还大大超过了我的预期。

 

1、安装

http://hudson-ci.org/ 下载最新的hudson.war 包。如果只是试用,可以直接用:

java -jar hudson.war

正常使用时建议部署到Web容器中,以Tomcat为例,将文件解压到webapps里即可。

 

注1: Tomcat中建议将URI编码设为UTF-8 ,修改Tomcat的conf/server.xml,在<Connector>中添加URIEncoding="UTF-8"。

<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" URIEncoding="UTF-8"
 />

注2: 建议修改Hudson的HUDSON_HOME 配置,默认的位置比较隐蔽,可以指定一个位置,专门用于Hudson存放文件。打开webapps/hudson/WEB-INF/web.xml,找到HUDSON_HOME的env-entry。

  <env-entry>
    <env-entry-name>HUDSON_HOME</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>D:/Hudson</env-entry-value>
  </env-entry>

 

2、全局设置

Manage Hudson中选择Configure System,其中可对Maven、JDK、Ant进行设置,因为使用Hudson时一般都已经安装好了这些东西,所以不用勾选Install automatically,只需在Add时指定名字和相应的HOME位置即可。

因为在进行构建及测试等工作时,会占用大量内存,所以需要调整MAVEN_OPTS ,可以调整全局MAVEN_OPTS,也可以为每个项目单独设置MAVEN_OPTS,例如,设置Global MAVEN_OPTS为-Xmx1024m -Xms512m。

 

3、安装插件

插 件机制为Hudson带来了无限的扩展性,默认安装后Hudson已经自带了一些插件,例如maven、subversion等,可以通过Hudson管 理界面中的Plugin Manager来安装更多插件。由于我在过程中需要做静态代码分析和单元测试覆盖率分析,所以需要额外安装一些插件:

  • Static Analysis Collector Plug-in
  • Static Analysis Utilities
  • Checkstyle Plug-in
  • FindBugs Plug-in
  • PMD Plug-in
  • Emma Plugin

此外,如果需要定制邮件通知内容,还可以安装Hudson Email Extension Plugin。以及Dashboard View,用于显示仪表板。

 

4、项目配置

虽然Hudson也有rake的插件,不过我们还是以Maven为主,所以在New Job里选择Build a maven2 project,新建完成后也可以对项目设置进行修改。

  • Source Code Management中可以配置相应的版本管理工具,例如Subversion,如果Subversion的Repository需要认证,Hudson在完成设置后会提示的。
  • Build Triggers用于设置如何触发构建,Build periodically可设置定时,共5项内容,以空格分隔,具体配置可点击配置界面右侧的问号(这个做的也很人性化,随时可以获取所需的帮助)
    MINUTE HOUR DOM(Day of Month) MONTH DOW(Day of week)
  • Build项中主要设置项目的pom.xml,还有构建时使用的Maven Goals,例如
    compile test findbugs:findbugs  emma:emma
  • Build Settings和Post-build Actions中可以根据上面使用的Goals勾选相应的内容,例如,要发布Checkstyle、Findbugs和PMD的报告,需要合并发布分析结果,需要发布单元测试覆盖率报告等

凡是有问题,先找右侧的问号,基本就能知道该如何配置了。

需要生成报告,就需要提供报告所需的数据,因此在正式使用前需要在项目的pom.xml中配置Maven插件。

在<reporting>段中增加如下内容(版本号请根据最新版本调整):

<reporting>
	<plugins>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>findbugs-maven-plugin</artifactId>
			<version>2.3</version>
			<configuration>
				<xmlOutput>true</xmlOutput>
				<threshold>High</threshold>
				<effort>Default</effort>
				<relaxed>true</relaxed>
				<findbugsXmlOutput>true</findbugsXmlOutput>
			</configuration>
		</plugin>
         
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-checkstyle-plugin</artifactId>
			<version>2.4</version>
		</plugin>
         
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-pmd-plugin</artifactId>
			<configuration>
				<targetJdk>1.5</targetJdk>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>emma-maven-plugin</artifactId>
			<version>1.0-alpha-2</version>
			<inherited>true</inherited>
		</plugin>
	</plugins>
</reporting>

 

<build>段中同样加入emma插件:

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>emma-maven-plugin</artifactId>
	<version>1.0-alpha-2</version>
	<inherited>true</inherited>
	<executions>
		<execution>
			<id>instrument</id>
			<phase>pre-site</phase>
			<goals>
				<goal>instrument</goal>
			</goals>
		</execution>
	</executions>
</plugin>

 

注3: 如果觉得静态代码分析的各个规则过于严格,希望定制,也可以在pom.xml中进行定制,模块化的项目中,子模块中的配置可以覆盖上级配置,以Findbugs为例,如果希望去掉一些规则,可在<plugin>的<configuration>配置中加入:

<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>

同时新建findbugs-exclude.xml,内容如下:

<FindBugsFilter>
   <Match>
      <Bug pattern="EI_EXPOSE_REP, EI_EXPOSE_REP2" />
   </Match>
</FindBugsFilter>

 

完成所有的配置后,可以等待定时执行或者手工去触发构建,构建之后就能在项目页面查看到漂亮的图表及报告了。

 

 

分享到:
评论
2 楼 obullxl 2010-08-03  
太好了,非常感谢。
1 楼 macrochen 2010-04-20  
不错, 很入门, 准备搞搞hudson

相关推荐

    Hudson_CI:PHP持续集成

    NULL 博文链接:https://zhengdl126.iteye.com/blog/1169472

    基于Hudson的CI环境搭建

    项目基于hudson的CI环境搭建的培训文档

    hudson学习教程Hudson安装与使用,Hudson配置,Hudson插件

    Hudson安装与使用,Hudson配置,Hudson插件Hudson安装与使用,Hudson配置,Hudson插件Hudson安装与使用,Hudson配置,Hudson插件Hudson安装与使用,Hudson配置,Hudson插件Hudson安装与使用,Hudson配置,Hudson插件...

    Hudson(CI_Part1)

    希望大家觉得好用就行,不用描述,需要的人都知道,一款非常轻量级的CI工具

    CI持续集成服务器 hudson 使用备忘1

    Hudson homepage: http://hudson-ci.org/ 从这个地址下载下hudson 的war包,hudson是一个web应用.其中自

    Hudson持续集成服务器的安装配置和使用

    Hudson持续集成服务器的安装配置和使用

    m2eclipse-hudson插件

    eclipse集成hudson Ci服务器的插件

    持续集成工具hudson配置和使用介绍

    Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI 服务器吸取了许多经验教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的 CI 服务器。...

    持续集成工具之Hudson

    在本教程中,讲解如何安装、配置和使用 Hudson 作为 CI 服务器,但是要记住,CI 远不只是个工具。实际上,使用的工具可能是 CI 比较次要的方面,因为 CI 工具所做的仅仅是在代码存储库中探测到修改时运行构建。构建...

    hudson 使用说明

    Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性。例如,一个 ...

    Hudson 入门

    NULL 博文链接:https://dy-f.iteye.com/blog/1845465

    Hudson的持续集成指南.pdf

    目前较为流行的CI持续测试工具。基于web,配置简单。较之TeamCity等有着较为明显的优势。 本文非常详细的描述了Hudson的配置和应用。对持续集成CI感兴趣的童鞋可以看看。

    Hudson平台搭建及使

    Hudson 是一种革命性的开放源码 CI (持续集成)服务器,它从以前的 CI 服务器吸取了许多经验教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的 CI ...

    hudson-3.3.1.war

    For Production use, Hudson 3.3.1 from the Eclipse Foundation is now available. This WAR file is suitable for any O/S. We recommend that users of 3.0, 3.1, 3.2 or 3.3.0 upgrade to this release. his ...

    Hudson持续集成

    Hudson 是一个可扩展的持续集成引擎。 主要用于: 1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。 2.监控一些定时执行的任务。 Hudson拥有的特性包括: •易于安装-只要把hudson.war部署到...

    hudson-3.2.2.war

    hudson-3.2.2 放在tomcat下直接打开即可

    hudson 中文操作手册

    hudson 中文操作手册 hudson 中文操作手册 hudson 中文操作手册

    hudson自动构建文档

    hudson安装及其配置 hudson平台搭建及使用 Hudson使用参考手册 关于hudson远程自动构建发布 使用hudson_搭建daily_build_系统

    contiunous integration server hudson3.1.2

    hudson contiunous integration server 3.1.2开源的,好用!

    hudson持续集成包

    hudson持续集成包hudson持续集成包

Global site tag (gtag.js) - Google Analytics