前言:最近几天在学习持续集成工具——Hudson的使用,但由于我原来对“持续集成”其实也并不十分理解,所以还走了些弯路,于是决定整理一个最基本的持续构建与Hudson的入门介绍。
一、基础概念介绍
本小节主要是介绍一些基本概念,如果已经了解的就可以忽略本节。
1、什么是持续集成(Continuous Integration)
(以下转自:http://dev.firnow.com/course/3_program/gcs/20071120/87085.html)
引用
这个名词已经在软件开发领域持续了N年,一个比较简单的定义如下:
持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。更具体的解释可以参考Martin fowler的Continuous Integration 。
2、什么是Hudson
Hudson 是近年来应用得比较广泛的一个持续集成工具。与另一个也是使用非常广泛的工具CruiseControl比起来,Hudson显得更轻量、简单易用。
(以下转自:http://www.oschina.net/p/hudson)
引用
Hudson拥有的特性包括:
• 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
• 易于配置-所有配置都是通过其提供的web界面实现。
• 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。
• 生成JUnit/TestNG测试...
hudson项目主页(日本人做的……):http://hudson-ci.org/
3、什么是Ant
(以下资料转自网上,但哪里是原出处已不可考)
引用
Apache Ant 是一个基于 Java 的生成工具。据最初的创始人 James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具) 的首字母缩写。
C 或 C++ 中的传统项目经常使用 make 工具来做这件事情,其中生成任务是通过调用 shell 命令来执行的,而依赖关系定义在每个生成文件之间,以便它们总是以必需的顺序执行。
Ant 与 make 类似,它也定义生成文件之间的依赖关系;然而,与使用特定于平台的 shell 命令来实现生成过程所不同的是,它使用跨平台的 Java 类。使用 Ant,您能够编写单个生成文件,这个生成文件在任何 Java 平台上都一致地操作(因为 Ant 本身也是使用 Java 语言来实现的);这就是 Ant 最大的优势。
Ant 的其他关键优势包括其突出的简单性和无缝地使用自定义功能来扩展它的能力。
我个人觉得,通俗点说就是,ant相当于可以跨平台的批处理工具,而且能干的事情也比window的bat要多
Ant不是构建工具的唯一选择,Apache下还有另外一个构建工具,叫做Maven,也可以跟Hudson进行集成,不过Maven我还不会用,所以这里就只讲Ant了……
Ant项目主页:http://ant.apache.org
二、用Hudson和Ant进行持续集成
1、Hudson工作原理
Hudson的工作原理其实就是持续集成的工作原理。如下图所示:
具体描述如下:
[1] 程序员通过SVN客户端提交代码。
[2] Hudson用svnupdate命令从svn中更新代码到本地。
[3] Hudson调用项目里的Ant或者Maven脚本进行构建。
[4] 构建结束,生成报告并记录日志,发送结果。
[5] 用户可随时通过浏览器在Hudson上浏览构建结果。
由此可以看出,在这个持续集成里头,Ant才是构建工作的核心,而Hudson则相当于一个调度者、管理者。
2、Meet Hudson Step by Step(一个简单例子)
我们现在来对Hudson进行一个初步的使用,本例子里面只涉及到必要的、最简单的配置。
首先是必要条件:①jdk要装好,tomcat装好(虽然hudson不用tomcat也可以自己启动,不过我想大家一般都会有tomcat的,所以这里就用tomcat来运行hudson)。②至少有一种配置管理工具,我这里用的是SVN。Hudson默认支持SVN和CVS,如果是其他的话需要另外安装Hudson插件。③ant的build.xml要先写好,因为具体的构建工作都需要通过它来执行。附件build.rar里提供了一个比较简单的build.xml供参考。
操作步骤如下:
[1] 在两个项目的主页里下载好Hudson.war和ant压缩包,把ant的压缩包解压到某个目录下 。
[2] 最好先在环境变量设置里JAVA_HOME设好,把ant的bin目录添加到path中(因为我以前就是配好了的,虽然似乎不加也可以,不过最好还是加上吧)
[3] 把hudson.war部署到tomcat。【注:我把hudson.war包直接放到webapps目录下,然后启动tomcat,不成功,tomcat提示无法解压zip文件的异常,但通过tomcat管理界面来部署war包却可以,原因暂时不明。】
[4] 部署成功后,访问http://localhost:8080/hudson,打开hudson管理界面
[5] 选择“系统管理”-->“系统设置”,配置好“JDK”和“Ant”两项。
[6] 回到hudson首页,选择“新建任务”,输入任务名称,并选择“Build a free-style software project”(如果用Maven构建的话就选第二个)
[7] 进入下一页,在“Source Code Management”中,选择Subversion,填写svn url
【注:ant的build.xml放在这个路径的根目录下】
[8] 在“Build”里,选择Invoke Ant,选择前面配置的那个ant
target里面填写需要运行的build.xml的target,如不填即执行build.xml里指定的default target。
[9] 其他配置暂时可以不管,Save之后点击左边的“立即生成”看看,如无意外,应该能看到构建成功了。
3、下一步
到此,你已经对Hudson有了一个基本的了解。接着就可以继续更改hudson的Job配置,可以设置构建的触发方式、构建的周期、邮件服务器配置(用来发送构建结果的)等等,这些功能大家要用的时候就自己摸索啦~~
- 大小: 17.2 KB
- 大小: 34.8 KB
- 大小: 68.1 KB
- 大小: 42 KB
- 大小: 12.8 KB
- 大小: 38.4 KB
分享到:
相关推荐
11. **Ant与持续集成**:简述Ant在持续集成工具(如Jenkins、Hudson)中的应用。 12. **实战案例**:提供实际项目构建的例子,帮助读者将理论知识应用于实践。 通过学习这本书,初学者将能够掌握Ant的基本操作,为...
在持续集成环境中,Ant常与Jenkins、 Hudson等工具结合使用,自动执行构建和测试任务。这提高了开发效率,确保每次代码更改后都能快速验证构建的正确性。 综上所述,Ant作为Java开发中的构建工具,提供了强大的灵活...
- **自动化部署**:结合持续交付工具(如 Jenkins Pipeline),Hudson 可以实现从构建到部署的全自动化流程。 - **跨团队协作**:Hudson 支持多项目管理,不同团队可以共享同一台服务器进行协作开发。 - **项目监控...
Hudson 是一个开源的持续集成工具,主要用于自动化各种软件构建、测试和部署任务。这篇教程将引导你深入了解Hudson的安装、操作以及具体配置,帮助你快速入门。 **一、Hudson安装** 1. **系统需求**: 首先确保你的...
Ant可以与持续集成工具,如Jenkins和Hudson,无缝集成,自动化项目的构建、测试和部署。 总之,Ant是一个强大且灵活的构建工具,对于新手来说,理解其基本概念和常用任务,结合实际项目进行实践,是快速掌握Ant的...
6. **持续集成**:Maven与CI工具如Hudson、Jenkins集成,使得持续集成变得更加便捷。 7. **质量控制**:可以与代码质量工具如Sonar集成,进行代码质量管理。 8. **插件生态**:Maven拥有丰富的插件生态系统,可以...
Jenkins是一个开源软件项目,是全球最受欢迎的持续集成(CI)工具之一。它的前身是Hudson,并且随着时间的发展,它不仅成为了CI领域的领头羊,还在持续交付(CD)方面有着广泛的应用。Jenkins支持多种编程语言,包括Java...
- **持续集成实践**:结合Hudson(现更名为Jenkins)等工具,实现Maven项目的持续集成流程,提高开发效率。 #### 12. 使用Maven构建Web应用 - **Web应用构建**:讨论Maven如何应用于Web应用程序的构建,包括前端...
背景案例第5章 坐标和依赖第6章 仓库第7章 生命周期和插件第8章 聚合与继承第9章 使用nexus创建私服第10章 使用maven进行测试第11章 使用hudson进行持续集成第12章 使用maven构建web应用第13章 版本管理第...
- **CI 工具插件**:提供针对 Jenkins/Hudson、Ant、Maven 等常见 CI/构建工具的插件。 #### 测试库 - **标准库**:随框架一同安装的标准库集合,包括 Operating System、Telnet、Screenshot、String 等。 - **...