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

最近正好有机会在工作中推广持续集成,就借机在项目中做了一些应用,起初选择了老牌的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 资料4

    - **定义**:Hudson 是一款开源持续集成(Continuous Integration,CI)服务器,旨在为软件开发团队提供自动化构建与测试的支持。通过持续集成的方式,Hudson 可以帮助团队快速发现并修复代码中的问题,提高开发效率...

    Hudson Easy Bundle-开源

    Hudson,现更名为Jenkins,是一款广泛使用的持续集成(CI)服务器,它允许开发团队自动化构建、测试和部署软件。Easy Bundle 的核心目标是将Hudson与所有必要的插件打包在一个单一的存档文件中,以便于在各种环境,...

    Eclipse web开发从入门到精通(实例版)所有代码 光盘下载(part 3)

    10. **持续集成与自动化构建**:Eclipse可以与Hudson、Jenkins等CI/CD工具配合,实现自动编译、测试和部署,提升开发流程的效率和质量。 这个压缩包中的14、13文件可能是第十四章和第十三章的代码示例,它们涵盖了...

    jenkins入门讲解

    它的前身是Hudson,并且随着时间的发展,它不仅成为了CI领域的领头羊,还在持续交付(CD)方面有着广泛的应用。Jenkins支持多种编程语言,包括Java、C#、PHP等,同时还兼容Ant、Maven、Gradle等构建工具,能够与SVN、...

    Maven入门文档.doc

    6. **持续集成**:Maven与CI工具如Hudson、Jenkins集成,使得持续集成变得更加便捷。 7. **质量控制**:可以与代码质量工具如Sonar集成,进行代码质量管理。 8. **插件生态**:Maven拥有丰富的插件生态系统,可以...

    Jenkins权威指南pdf

    综上所述,《Jenkins权威指南》这本书不仅全面介绍了Jenkins的基础知识和核心概念,还深入探讨了其在CI/CD领域的具体应用场景和技术细节。无论是初学者还是有一定经验的开发者都能从中获得有价值的参考信息。希望...

    软件测试资料之自动化测试入门

    2. GitLab/CircleCI:集成了代码托管、持续集成/持续部署(CI/CD)功能,方便自动化测试。 七、挑战与注意事项 1. 维护成本:自动化测试脚本需要随着软件变化而更新,需合理规划,避免过度依赖。 2. 技能要求:自动...

    持续集成资料

    在IT行业中,持续集成(Continuous Integration,简称CI)是一种软件开发实践,旨在通过频繁地将代码集成到共享存储库来减少集成错误。它强调开发人员每天至少集成一次代码,并且每次集成都通过自动化构建和测试来...

    jenkins 安装与部署

    Jenkins是一个广泛使用的自动化服务器,它主要被用作持续集成/持续部署(CI/CD)的工具。它可以帮助软件团队自动化测试和构建软件,从而加速软件开发过程。Jenkins最初是作为Hudson的分支出现的,2011年由于项目分歧...

    Robot Framework Introduction

    - **CI 工具插件**:提供针对 Jenkins/Hudson、Ant、Maven 等常见 CI/构建工具的插件。 #### 测试库 - **标准库**:随框架一同安装的标准库集合,包括 Operating System、Telnet、Screenshot、String 等。 - **...

    jenkins-plugin-example:一个示例仓库显示一个hello world jenkins插件

    Jenkins 是一款流行的开源持续集成(CI)工具,它允许开发者自动化构建、测试和部署软件。为了扩展其功能,Jenkins 提供了一个丰富的插件生态系统。本篇文章将深入探讨如何创建一个简单的 "Hello World" Jenkins ...

    jenkinsci-hello-world-plugin

    Jenkins是一款流行的开源持续集成(CI)工具,它允许开发者自动化构建、测试和部署软件。"Hello World"插件是入门级的示例插件,通常用于演示如何开发和扩展Jenkins的功能。 **描述:** 虽然描述信息为"NULL",但...

    软件测试资源.docx

    1. **Jenkins**:目前市场上最流行的CI工具之一,支持插件扩展,可以轻松地集成到现有的工作流程中。 2. **Hudson**:虽然Hudson和Jenkins在技术上非常相似,但由于Jenkins的社区更加活跃,Hudson的使用率相对较低。...

Global site tag (gtag.js) - Google Analytics