- 浏览: 1017272 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
之前在网上查过一些资料,都说hudson作为持续集成工具是十分好的,因为要在实际项目中应用,所以自己尝试搭建持续集成服务器,持续集成相对其 他,网上的资料少之又少,尤其是hudson,基本上网上的资料大部分是针对ant,而且教程更是少的可怜。因为我们的项目要用到maven2,所以我最 开始尝试的是使用continuum(maven开源项目中的子项目),个人认为对maven2支持应该不错,有兴趣大家可以去了解一下。开始用 continuum搭建持续集成服务器成功,但是感觉continuum在使用上一般,主要针对用户体验,功能相对比较简单,并没有大量的详细内容。在网 上看到hudson对maven2支持也是十分不错,所以尝试搭建hudson,经过查资料和胡乱尝试,终于成功,总体感觉比continuum要好些, 尤其是在功能管理上,下面将自己搭建的过程写出来,希望大家可以交流,因为也是初次使用,很多地方可能不对,见谅。
一、持续集成的概念
概念网上很多了,这里就不再详细说了。
持续集成简称CI,持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。一个典型的持续集成周期包括以下几个步骤:
1. 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
4. 运行所有的自动化测试。
5. 进行代码分析。
6. 产生可执行的软件,能够提供给测试人员进行测试。
持续集成服务器,比如CruiseControl或者VSTS
CruiseControl, Anthill, Bamboo, TeamCity, Continuum,hudson
二、hudson的简介
Hudson
是一种革命性的开放源码 CI 服务器,它从以前的 CI 服务器吸取了许多经验教训。Hudson
最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的 CI 服务器。Hudson
容易使用的第二个原因是它具有强大的插件框架,所以很容易添加特性。例如,一个 Hudson 插件可以随时间的推移跟踪 FindBugs
和代码覆盖。它还可以报告测试结果的趋势(来自 JUnit 或 TestNG)以及构建结果和对应的执行时间。
Hudson 需要运行 Java 5。如果需要使用 Hudson 附带的嵌入式容器(Winstone)之外的其他容器,那么只需使用一种 Servlet 2.4 容器。对于大多数情况,Winstone 就足够了。
三、hudson的安装(jdk5+tomcat+maven2)
使用hudson的好处重要是因为它安装和配置起来比较方便,一般只需要两个步骤:
1、下载最新版本的hudson工程包(war),官网下载即可 http://hudson.gotdns.com/latest/hudson.war;
2、将下载的war包直接放到tomcat_home\webapps目录下
启动tomcat,启动完成,访问http://localhost:8080/hudson/,(tomcat端口默认是8080);如果看到欢迎页面表示安装成功;(从网上找的,因为我的里面已经有项目了,不过大同小异,:))
四、hudson的构建
前置条件:
如果您想在Hudson完成一次构建,必须符合下列条件:
- 您必须拥有一个可用的源代码仓库。
- 这个仓库必须包含你想要构建的源代码。
- 仓库里必须包含能构建源码的构建脚本。它们通常来源于Ant 或者Maven ,但是Hudson也支持简单Shell脚本、NAnt 和MSBuild 。
在本文中,我们使用maven2来构建
配置hudson:
在您开始构建软件之前,需要对Hudson进行一些小小的配置。首先,您必须告诉Hudson您的Java JDK和MAVEN2的安装位置。点击http://localhost:8080/Hudson 打开Hudson的主页,单击Manage Hudson 。该网页上附带了下一步,单击Configure System 。
1.如下图,配置MAVEN_HOME
说明:开始需要点击按钮 add maven,出现下图,将默认的Install automatically去掉,手动指定MAVEN_HOME目录
可以设置多个MAVEN的版本,在项目中选择
2.配置jdk版本,方法比较类似,可设置多个
这里我设置了两个JDK
hudson做的比较人性化,如果home目录指定不对,会有相应提示
3.配置邮件提醒功能
如果build失败可以发送邮件提醒相关人员,husdon的邮件配置比continuum配置要简单的多,这里我们用Gmail的邮件服务器
如下图配置:
SMTP 填写gmail 的即可
管理员的邮件地址,即所有的通知邮件通过该邮箱发送
hudson URL,地址,本地会有警告,填写IP地址,警告应该会消失,没试过,呵呵
点击高级选项设置邮件的用户名、密码及端口,如下:
点击 Test configuration by sending e-mail to System Admin Address 可以进行邮件测试
配置完成,hudson的基本配置完成,下面将实际项目引入
在首页点击 New Job,出现以下:
输入项目名称,选择 Build a maven2 project ,点击OK进入下一步
各选项说明:
Project name :我已经把这个项目命名为xwb,但你也可以在这里修改它。
Description : 这是一个自由项,主要用来说明你关于这次构建工作的描述。可不填。(帮助 :这说明放在项目的首页,以便访问者可以知道这个工作的内容。您也可以在这里使用任何HTML标记。)
Discard old builds : Hudson默认将保留过去的构建,除非你事先选中此框。(帮助 :这里控制着您想要在Hudson所在的磁盘把构建记录存储的有效期(诸如控制台输出、编译产成品等等)。Hudson为此提供了两个标准:1。时间驱 动。在Hudson中您可以判断如果达到一定时限来删除一条记录(例如,七天前)。2。数量驱动。在Hudson中您可以确保它拥有N份构建。如果又有新 的构建开始,最早的那份(记录)就将被删除。Hudson也可以让您建立的个别构建定义为'永远保持这个记录',以便防止某些重要的构建被自动丢弃。)
This build is parameterized : 如果选择此选项,Hudson将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。(帮助 :当您使用了Hudson的各种自动化,有时要求在构建过程中提供一组用户的输入,使用“parameterize”就能够更方便构建。例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。
本节参数可以完全按照您构建的需要配置。参数是以名字区分的,所以您可以有多个参数,只要它们名称不同。 关于此功能的更多资料请查看维基专题讨论 。)
Disable build : 如果这里被勾选,这项工作将不会执行构建,直到选项禁用为止。(帮助 :有时候,你会想暂停某个构建中的项目。例如,也许您正准备一次大的迁移,而且你知道新版本会失败。或者您想每一个小时构建一次,但您却发现CVS服务器 将在未来24小时内down机。当这个选项被设置后,关于这个项目就不会再有新的构建。这样一来,您就可以在不想改变外部依赖或者提交错误通知的情况下禁 用构建过程。)
Advanced options : 我没有使用这些选项,但是当此复选框被选中时,选项中就会暴露下面的接口:
Quiet period : 在这里您可以配置一个静态监控,当构建准备按某个计划运行时,实际上它就已经在执行了。
Use custom workspace : 默认情况下,Hudson将在${jboss-home}/.hudson/jobs/[项目名称](注:Linux环境 )下创建一个工作区 。此选项将允许您使用指定的地址替代(它)。
Source code management : 在默认情况下是这三个选项:
Subversion
CVS
None
这个None会误解我先前的主张 :一个先决条件是要有一个源代码仓库。但我坚持认为,在大多数情况下,为Hudson选择某个仓库是绝对必要的。本文稍后,我将讨论如何安装Hudson 插件。如果您安装了一个与SCM相关的插件,并重新启动Hudson,那么在这个清单上也将出现一些新的选择。本文,我使用 Subversion 。当您选择Subversion后,将展开一个配置表单。我会在下面的某一部分中单独描述这个配置(见“ Subversion的工作配置” ) 。
Build after other projects are built : 此选项支持一条装配(流水作业)线——作业依赖: 一个作业依赖于另一个作业的输出的情况 —— 或者如以下情形:你只是想简单的把一些有关的工程构建编入一个组以便一起构建。当您一选择它,你将得到一个字段,输入其他工程的名字[多个项目名间用逗号分隔]后,这个构建应该就可以运行。
Poll SCM : 这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Hudson每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Hudson每隔15分钟就检查一次您源码仓库的变化。更多信息请查阅Quartz CronTrigger 中关于这个定时作业语法的详细描述。
Build periodically : 此选项 (也是使用定时作业表达式)仅仅通知Hudson按指定的频率对项目进行构建,而不管SCM是否有变化。我这个作业就属于目标测试环境是按某种方式定期修订的而SCM却是静态的情况。如果您想在这个作业中运行一些测试用例的话,它可能就很有帮助。
Add build step : 按一下这个按钮,添加了一项指令以执行构建脚本。您的指令可以是下列之一:
执行 Shell
执行 Windows 批处理
使用Ant(这是我将要使用的选项,在下面我会做详细的说明)
使用Maven
Archive the artifacts : 当您选择此选项,就可以指定文件和目录的掩码(Ant风格的掩码,可以指定包含与排除),当与掩码相匹配的构件在构建时将被添加到Hudson的构件仓 库,它们会用作业(名)和构建序号来标识。所有以前构建过的构件可以选择性地丢弃,以节省您Hudson服务器上的磁盘空间。
Record fingerprints of files to track usage : 当您选择此选项,它使用类似Ant方式的掩码,恁可以指示Hudson去生成构件的指纹码,确保您能够更容易地找到它们的位置,另外判断系统中的这些构件是否还在使用。
Publish javadoc : 如果您的构建脚本能生成JavaDoc,此选项将指示Hudson发布这些内容,而且立即把它公布在当前工作的主页上。每一个成功构建的文档内容都可以保留,但在默认情况下只保留最新的。
Publish JUnit test result report : 如果您的构建脚本执行了JUnit测试,此选项将指示Hudson处理XML测试文档并为每次连续构建产生一份可持续的报告,依据正在进行的测试汇总处理结果。其结果是当前工作主页的一份报告,作业中的单元测试会随着时间的推移按由老至新进行陈列。
Aggregate downstream test results : 在某些情况下,作业中一组单元测试花费的时间大大长于实际构建它所花的时间。在这些情况下,你可以选择把构建和测试分为不同的作业,以便完成构建能相对迅速,一旦与这相关的一个或多个测试作业就执行完毕,构建也就成功完成了。 当您选择这个选项, Hudson就会把构建后作业的测试结果进行统计,并且能追溯到它们的明细。用以做为本次构建成功或失败的主要依据。
Build other projects : 较之前面的选项,这个选项主要用来实现一个合乎逻辑的构建和测试过程,它会被分为两个或两个以上的物理工作,并且会按顺序执行。当此项被选择后,您将得到 一个字段,可以在其中输入您想在当前作业中后执行的其它作业名[多项作业可用逗号分隔]。即使目前的作业得出结论说构建可能不稳定,您也可以选择这样 做。(关于“作业的稳定性”请查阅“作业状态”章节以获取更多信息)
E-mail notification : 当您选择此选项,您可以输入一个或多个电子邮件地址[多个可用空格分隔],当Hudson完成了执行作业后,将会给它们发送通知。事件触发时将产生一份 Email,包括构建失败、构建不稳定等。这儿有一个额外的选项,当由于用户的错误提交造成Hudson决定废弃此次构建,将会发送一份专门的邮件给这位 SCM提交者,以便让他检查源代码。
从网上抄的,可能有的地方不一样,但基本上还是正确的
下面针对配置说以下几点:
1、JDK的选择,之前配置好的JDK在这里可以选择
2、勾选 Discard Old Builds 可以输入保存的历史记录(个人理解)
3、配置代码控制服务器,我用的是SVN
在本地搭建的代码控制服务器,不会的同学可以去网上找资料,这里不多讲了,呵呵,我没有启动http服务器,这里直接用的svn,可以找 到,http更改没有问题了,其他协议没有试过,想continuum可支持file协议(默认是关闭的),指向项目的根目录,如果不存在,hudson 也会给出相应的提示,真人性化啊,呵呵
PS:用户名密码暂时还不知道哪里配,知道的同学告诉我啊,因为下载代码并不需要用户名密码(权限控制,修改时需要)
Local module directory 属性是一个可选的和额外的子目录,它将为此次构建创建一个工作区。
“Use
update”复选框是很重要的。这是Hudson准备从工作区构建执行前先刷新Subversion仓库以获取最新源码的最快捷的方式。这一动作是行之有效的,并在大多数情况下也相当快。警告
,如果源构件已从仓库删除,工作区也会利用此步骤持续更新源码。另一种选择当然是禁用此选项,若是这样,Hudson将清除工作区并从源码仓库中重新注入。
最后一个选项是指定一个源代码仓库浏览器,诸如FishEye或VisualSVN
。如果您拥有下面列表提供这些产品的一种,就选择适合的浏览器并把它指着自己的源代码仓库地址。
4、指定项目构建的时间间隔
根据上面给出的选项内容进行配置,开始设置了 Build periodically,这个设置应该是不管代码有没有更新都build一次
而 Poll SCM 应该是定时检查是否有新的代码更新,如果更新了就执行build,个人认为
5、指定POM.XML文件,如果项目中有多个POM文件,指定根目录POM文件,MAVEN会自动加载子项目
这里我没有做改变,开始指定说找不到文件,后来发现husdon其实讲svn上的代码下载到了工作目录,我的在
C:\Documents and Settings\user\.hudson\jobs\job_name\workspace 下,而且查找的POM文件通过后台日志得知也是在这里找
所以这里我没有改动,成功了,呵呵
6、配置邮件通知列表(具体人员)
定义一个邮件列表( 多项用空格间隔),以便当构建失败时发送一份通知。当一次作业总是不稳定或者被终止,"Send email for every unstable build "就可以不选,以阻止Hudson不断发送一份已获知条件的邮件通知。
以上配置完成,点击save,创建完成,可在首页中查看项目列表
列表中第一个图标表示本次build的状态,闪烁表示进行中,红色表示失败
第二个图标表示以往build的总体情况,成功和失败的次数按比例分别为,晴天,阴天,雨天,雷阵雨,呵呵,有意思
最右边的图标点击可进行手动build
其他的字段英文比较直观,不做说明
从上面的列表中可以看出,已经build了22次
点击job名称可以进入对项目进行详细信息查看,配置,删除等,如
没什么说的,大家自己研究吧
workspace里就可以找到项目的源码,以及maven打好的包,还可以下载
build失败后,邮件发送也正常
自己了解的暂时就这么多,大家多多交流,:)
发表评论
-
eclipse使用SVN创建,合并分支[转]
2011-11-11 17:11 912之前一直使用"小乌龟"进行分支建立与 ... -
持续集成之“依赖管理”
2011-08-04 18:10 807来源: infoq 发布时间: 2011-0 ... -
持续集成理论和实践的新进展
2011-08-04 18:10 989作者: 肖鹏 来源: InfoQ 发布时间 ... -
Maven原理和Maven2新特性
2011-06-30 16:02 1044Maven的基本原理和Maven2的新特性 用Maven做项 ... -
结合Maven2进行J2EE项目构建
2011-06-29 21:13 1202一.背景 Maven2 的基本 ... -
用Maven做项目管理
2011-06-29 21:10 1036用 Maven 做项目管理 在 Java世界中我们 ... -
天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp
2011-06-29 19:21 1299Maven2代比1代改进很多,其中主要强调的是--它不仅仅是个 ... -
Maven实战(四)——基于Maven的持续集成实践
2011-06-28 13:16 963Martin的《持续集成》 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-28 13:07 1022hudson 是一个可扩展的持续集成引擎,Hudson非常 ... -
敏捷开发、极限编程
2011-06-27 00:35 881什么是敏捷开发?一种以人为核心、迭代、循序渐进的开发方法。在敏 ... -
敏捷开发简介
2011-06-27 00:34 1199在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不仅 ... -
用SecureCRT连接VMware中的Linux系统
2011-06-16 22:03 1601一、预备知识: Secure: SecureCRT将S ... -
持续集成之路——Maven
2011-06-15 15:04 733写在前面 ... -
持续集成之路——Maven(续)
2011-06-15 15:02 863接上篇)在新创建了项目之后,可以看到目录结构: ... -
持续集成之路——搭建Maven私服
2011-06-15 15:01 1077在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-15 15:00 2041前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
maven下nexus的搭建,jar包上傳等注意事項
2011-06-15 14:58 2492nexus是用來搭建本地jar ... -
解决nexus下载maven索引的问题
2011-06-14 23:23 3173在上个周五在公司的一 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-14 00:50 1108前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-08 01:04 852hudson 是一个可扩展的持 ...
相关推荐
【标题】:“持续集成工具Hudson入门介绍(结合Ant)” 在软件开发过程中,持续集成是一种重要的实践,它强调开发者频繁地将代码集成到主分支,以便尽早发现并解决潜在问题。Hudson作为一款开源的持续集成服务器,...
结合Hudson、Maven和SVN,可以构建出一套高效、自动化的持续集成环境。Hudson负责监听代码变更并启动构建,Maven处理构建过程,而SVN则作为代码版本控制中心。这种组合可以确保团队的代码质量和项目进度,降低集成...
Hudson 是一款开源的持续集成工具,它能够自动化软件构建、测试和部署的过程,极大地提高了开发效率和软件质量。与 Maven 和 SVN 结合,我们可以构建一个强大的持续集成环境。Maven 是一个项目管理和综合工具,负责...
1. **Hudson(Jenkins)**:Hudson(现更名为Jenkins)是一款开源的持续集成工具,用于监控持续重复的工作,如构建、测试和部署软件。它支持多种构建工具,包括Maven,并可以通过插件扩展功能。 2. **Subversion...
Hudson、Maven和SVN(Subversion)是三个重要的工具,它们共同协作可以实现无缝的持续集成和自动部署。 **Hudson** 是一个开源的持续集成服务器,它的主要任务是监控和自动化软件项目的构建过程。通过定期检查代码...
本篇将详细介绍如何利用Hudson、Maven和Subversion(SVN)这三个工具进行持续集成,实现项目的自动化构建与部署。 一、所用开发工具 1. **Hudson**: 是一款开源的持续集成服务器,它能够监控集成构建过程,提供...
【标题】"hudson svn maven deploy BOM" 涉及到的IT知识点主要集中在持续集成工具Hudson、版本控制系统Subversion(SVN)、构建工具Maven以及部署插件和字符编码处理方面。以下是对这些关键概念的详细解释: 1. **...
【Hudson Maven 集成】是针对软件开发团队的一种高效构建管理方式,它结合了Hudson的持续集成工具和Maven的项目管理和构建工具。Hudson是一个开源的持续集成服务器,可以自动化软件项目的构建、测试和部署过程,而...
Hudson是一个持续集成工具,可以自动编译代码、运行测试并部署应用程序。它与Maven结合,可以监控SVN仓库的变更,一旦发现新的提交,就会触发Maven构建流程,包括编译、打包、测试等,最后将成功构建的版本部署到...
- **定义**: Jenkins (原名 Hudson) 是一个开源的持续集成工具,能够监控重复的工作,比如构建、测试软件项目。 - **特点**: - 自动化构建 - 多平台支持 - 插件扩展性强 - 易于集成多种开发工具 **2. Hudson的...
【Hudson+Maven+Svn配置】的整合是软件开发中的一个重要环节,它涉及到了持续集成、自动化构建和版本控制等多个关键领域。以下是对这些工具的详细解释和配置步骤: 1. **Hudson**:Hudson是一个开源的持续集成...
本篇将详细讲解如何结合Nexus、SVN、Jenkins(Hudson)、Maven以及禅道这五款工具,搭建一个适用于敏捷开发流程和持续集成理念的环境。这个环境能够极大地提升开发效率,简化项目管理流程。 **Nexus**: Nexus是一款...
将Nexus与Hudson结合使用,可以实现一个高效的CI流程。Nexus作为依赖管理的核心,负责管理和分发项目依赖,而Hudson则负责执行构建和测试任务。当Hudson在构建过程中需要依赖时,可以通过Nexus快速获取,这样既可以...
- **Hudson**:Hudson是一款持续集成工具,它可以自动化构建、测试和部署项目。Maven与Hudson结合使用,可以在代码提交后自动触发构建和测试,及时发现并解决问题。 - **hudson-V1.doc**:这个文件可能包含了早期...
**Hudson**(现称Jenkins)是一款开源的持续集成工具,它支持各种构建任务,包括编译、测试和部署。结合Git、Maven和Nexus,Jenkins能够自动化整个开发流程,从代码提交到生产环境部署,提高软件质量和开发速度。...
总结起来,Hudson结合Maven和SVN提供了一套强大的持续集成解决方案。通过自动构建和测试,它可以及时发现代码合并中的问题,提高开发效率。同时,通过自动部署和邮件通知,可以使得整个开发流程更加顺畅。不过,这...
Hudson(现在称为Jenkins)是一款开源的持续集成工具,用于监控持续的集成过程,确保代码质量并快速发现集成错误。它支持多种版本控制系统,如Git、SVN,并可以自动构建、测试和部署项目,极大地提高了开发效率。 *...
Jenkins作为一个开源的持续集成工具,可以监控集成过程中的编译、测试,甚至部署,帮助团队快速发现并解决问题。 "Maven_POM.xml详解.doc"则会深入解析Maven项目对象模型(Project Object Model,POM)。Maven是...
在IT行业中,Maven和Jenkins是两个非常重要的工具,它们在软件开发的构建和持续集成过程中发挥着关键作用。让我们深入探讨一下这两个工具以及它们之间的关联。 **Maven** Maven是一个Java项目管理和综合工具,它...