小Alan最近接了一个任务,就是使用Hudson进行持续集成,持续集成是怎么个概念,3言2语也说不清,有兴趣的童鞋去找我二奶度娘问问就知道了,说到Hudson就不得不提一下jenkins,目前来说用jenkins的应该要比Hudson多吧,毕竟jenkins的更新频率还是要比Hudson快,两者其实是五十步笑百步,会玩Hudson,jenkins也难不到哪去,所以jenkins暂时就不多介绍了。

在介绍Hudson之前给大家推荐一本书,这本书是来自许晓斌老师的《Maven实战》,本篇文章会借鉴该书的内容,小Alan也把这本书看完了,这是一本非常值得购买的书,作为一名程序猿可以买下来收藏。

接下来,让我们一起进入Hudson的世界:

第一步:安装Hudson

Hudson下载地址:http://hudson-ci.org/,下载完成后就能获得一个hudson.war文件,如图:

注意事项:Hudson必须运行在JRE1.5或更高的版本上。

最简单的启动方式是在命令行直接运行hudson.war(这里不演示这种方式,有兴趣的童鞋去找我二奶度娘问问就知道怎么玩了)。

Hudson.war顾名思义,既然是一个war文件,自然可以被部署到各种Web容器中,如Tomcat、Glassfish、Jetty及Jboss等。

这里以Tomcat7为例,只需要把Hudson.war扔到Tomcat的部署目录webapps下,然后去bin目录,运行startup.bat,如图:

待tomcat启动完成后,打开浏览器访问http://localhost:8080/hudson就能看到hudson的界面了。

首次运行Hudson会进入如下一个界面,要你选择你所需要安装的插件,选择好需要安装的插件后点击install或者finish,如图:

以后再次访问Hudson都会直接进入Hudson的首页,如图:

第二步:准备使用Hudson进行持续集成所需要的环境

①准备JDK运行环境:JDK环境还要我教你怎么搭建的话,你后面可以不用看下去了,作为一名猿,我是绝对不希望看见你这样的猿的,交配还得看基因好不好呢,好了不开玩笑了。

②准备Subversion仓库:在正式创建Hudson持续集成任务之前,需要准备好版本控制系统。常见的版本控制工具有CVS、Subversion、Git、Mercurial等。Subversion可能是当前使用范围最广的版本控制工具吧?反正我不知道大家喜欢用什么,但是我还是比较喜欢用Subversion,通俗点说就是SVN。SVN的安装我就不多扯了,我二奶度娘肯定知道的,没事多找我二奶谈谈人生,聊聊理想。

③准备项目管理框架:这里我会使用Maven,个人在工作的过程中觉得Maven真的是非常不错的,没用过的猿或者用过的猿都建议深入学习一下,Maven的安装也是so简单,别告诉我你不会,不会找一下我二奶度娘。

第三步:Hudson的基本系统设置

在创建Hudson持续集成任务之前,需要对Hudson系统做一些基本的配置,包括JDK安装位置和Maven安装位置,Hudson会使用这些配置好的JDK和Maven进行持续集成任务。也可以使用Ant或者Shell来持续集成项目,一样的要配置好安装位置。

点击Hudson首页左边的“系统管理”,然后单击页面右侧的“系统设置”以进入系统设置界面,如图:

在系统设置页面,首先要配置的是Hudson将使用的JDK。在页面中找到对应的部分,然后单击Add JDK按钮,Hudson就会提示用户进行安装。Hudson默认会提示自动安装JDK,可以看到Install automatically的复选框是被选上的,但是不建议自动安装,一般作为一个开发人员,本机上都是有JDK的,没必要花时间去等待Hudson再次下载JDK。手动输入本机JDK的位置(往往就是JAVA_HOME环境变量的值)。

可以配置多个JDK,需要项目支持多个不同版本JDK的时候非常有用,这里不多介绍。

Maven的配置与JDK类似,不再多说,如图:

最后,别忘了单击页面下方的Save按钮保存系统设置,如图:

第四步:创建Hudson任务

单击页面左边的新建任务,然后在页面右边选择任务的名称及类型。对于一般的maven项目来说,可选择的类型有Build a free-style software project和Build a maven2 project。前者不仅支持maven项目,还支持其它类型的构建工具,如Ant、Shell。这里我们选择第一种,这种方式更可控制,当任务出现问题的时候也更容易检查,如图:

输入任务名称,并选择free-style类型后,单击OK按钮即可进入详细的任务配置页面,如图:

第五步:Hudson任务的基本配置

首先是项目的名称和描述,接着是一个重要的选项Discard Old Builds。该选项配置如何抛弃旧的构建。Hudson每执行一次构建任务,就可以保存相应的源代码、构建输出、构建报告等文件。很显然,如果每次构建相关的文件都保存下来,将会渐渐耗光磁盘空间。为此,Hudson提供两种方式让用户选择保留哪些构建任务相关的文件,它们分别为:

□Days to keep builds:如果其值为非空的N,就仅保留N天之内的构建文件。

□Max # of builds to keep:如果#非空,就仅保留最多#个最近构建的相关文件。

如图,表示最多保留10个最近的构建,如图:

第六步:Hudson任务的源码仓库位置

接着需要配置项目的源码控制系统。在项目配置页面的Source Code Management部分,选择Subversion单选按钮,然后在Repository URL文本框中输入项目的Subversion仓库地址。一般来说,该部分的其他选项保留默认值即可(如果在界面没有看见这些东西,则说明Hudson Subversion Plug-in插件没有安装),如图:

需要注意的是,如果访问Subversion仓库需要认证,Hudson会自动探测并提示用户输入认证信息。因为我用的是局域网上的SVN,所以不需要认证,这里没有切实的图片给大家演示,如图:

单击enter credential后,Hudson会弹出一个页面让我们选择认证方式并输入认证信息。输入正确信息之后,Hudson就能读取仓库源代码了,如图采用用户名和密码的方式进行认证:

第六步:Hudson任务的构建触发配置

Build Triggers部分配置的是触发构建的方式。可选的三种方式分别为:

□Build after other project are built:在其他项目构建完成之后构建本项目。

□Build periodically:周期性地构建本项目。

□Poll SCM:周期性地轮询源码仓库,发现有更新的时候构建本项目。

我们选择第三种方式,也是最常用的构建方式,既然是轮询,就需要配置轮询的频率,Hudson使用了著名的UNIX任务调度工具Cron所使用 的配置方式。大家自己找我二奶度娘了解一下。如图:

我配置的是每隔15分钟轮询一次。

第七步:Hudson任务的构建配置

接下来要配置Hudson使用运行Maven命令构建项目。单击Build部分中的Add build step下三角按钮,然后选择Invoke Maven 3(如果没有看见这个,说明没有安装Hudson maven3 Plugin),如图:

这里就会默认使用我们在系统配置中配置的maven构建项目,指定好要运行的命令,如图:

需要注意的是,日常持续集成任务如果成功的话,都会生成快照版的项目构建。如果维护了一个私服,那么持续集成任务就应当自动将构建部署到私服中,供其他项目使用。单击最下方的Save按钮保存配置。这时,可以单击页面左边的“立即构建”来手动触发第一次集成。如图:

这样,一个简单的持续集成任务就配置成功了。

可爱博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

本文出自博客园,欢迎大家加入博客园。

使用Hudson进行持续集成的更多相关文章

  1. Hudson(Jenkins)持续集成插件开发环境搭建

    Hudson持续集成插件开发环境搭建 第一步安装java jdk,至于版本的话推荐1.6以上吧.安装好jdk设置环境变量,确保你在cmd中输入java -version有提示你jdk的版本信息等,也就 ...

  2. Android+git+hudson+gradle持续集成

    linux 主机   android sdk安装忽略 jdk安装忽略 hudson安装忽略 gradle安装 1:下载相应的gradle(这里是gradle-2.10-all.zip)  2 :  解 ...

  3. Jenkins在Windows系统dotnet平台持续集成

            之前写过一篇文章是在CentOS上构建.net自动化编译环境, 今天这篇是针对于Windows平台的环境.        Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平 ...

  4. HUDSON(Java开发的一种持续集成工具)

    Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. Hudson的特性 1.易于 ...

  5. Hudson可扩展持续集成引擎

    参考文章:http://blog.csdn.net/dazhi_100/article/details/11629133 极限编程中一项建议实践便是持续集成,持续集成是指在开发阶段,对项目进行持续性自 ...

  6. 利用Hudson持续集成来执行Android自动化测试(转)

    当你套用Athrun.Robotium等框架,针对自己的项目写完了一堆自动化测试脚本后,在Eclipse之外怎么让它们可以持续性地跑起来并展现报告呢? 据我了解,方便的方法大致有两个:其一,利用Hud ...

  7. Hudson+Maven+Svn搭建持续集成环境

    Hudson+Maven+Svn搭建持续集成环境 博客分类: 配置管理 mavenSVNTomcat项目管理配置管理 一.所用开发工具 1.    Hudson: Hudson 是一种革命性的开放源码 ...

  8. 持续集成环境(Hudson)搭建

    持续集成环境(Hudson)搭建 这是在公司写的,公司要求用英文,我也没时间翻译了.还请见谅! Hudson是个非常强大持续集成工具,配合svn,maven,sonar,redmine工具就更加完美了 ...

  9. 持续集成篇 --Hudson持续集成服务器的安装配置与使用

    样例项目参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221  8G内存 ...

随机推荐

  1. Thread.Sleep(0) vs Sleep(1) vs Yeild

    本文将要提到的线程及其相关内容,均是指 Windows 操作系统中的线程,不涉及其它操作系统. 文章索引 核心概念 Thread.Yeild       Thread.Sleep(0) Thread. ...

  2. substring的用法

    public String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串.该子字符串从指定的 beginIndex 处开 ...

  3. salesforce 零基础学习(五十七)Test 类中创建TestUser帮助类

    我们写Test Class的时候往往都需要指定一个uesr去run test method. TestUserHelper类如下: public class TestUserHelper { publ ...

  4. javascript中的浮点数运算

    解释一下下面代码的输出 console.log(0.1 + 0.2); //0.30000000000000004 console.log(0.1 + 0.2 == 0.3); //false Jav ...

  5. 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档

    通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...

  6. Python标准模块--argparse

    1 模块简介 你一定很奇怪Python是如何命令行中的变量的吧?argparse就是用来解决这个问题的,argparse是optparse的替代. 2 模块使用 2.1 开始 我发现解释一个编程的概念 ...

  7. ASP.NET 5 WebApi 返回 HttpResponseMessage

    首先,ASP.NET 5 没有了 MVC 和 WebApi 的区分,都属于 ASP.NET 5,从 Controller 的继承就可以看出,原来 ASP.NET WebApi 2 ValuesCont ...

  8. JVM学习(1)——通过实例总结Java虚拟机的运行机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...

  9. 解决新版Android studio导入微信支付和支付宝官方Demo的问题

    最近项目要用到支付宝支付和微信支付,本想使用第三方支付框架ping++或者BeeCloud的,但是由于他们的收费问题,让我望而却步,而且公司给了相应的公钥.私钥和APPID等,所以就用下开放平台的呗. ...

  10. 现代3D图形编程学习-环境设置

    本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...