`
yangzb
  • 浏览: 3502471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

持续集成工具hudson

    博客分类:
  • CI
阅读更多

一.什么是持续集成

持续集成的核心概念

CI过程会经常构建软件 组件;在许多情况下,每当源代码 存储库(比如 Subversion 或ClearCase)中的代码发生变化时,都要构建软件组件。CI的好处是:经常构建软件可以确保尽早遇到问题(比如代码缺陷),避免问题在软件开发 周期晚期变复杂时才被发现。

工具 与过程

尽管 CI 实际上是一个过程,但是持续集成 这个词常常与一个或多个工具相关联。在本教程中,讲解如何安装、配置和使用 Hudson 作为 CI 服务器 ,但是要记住,CI远不只是个工具。实际上,使用的工具可能是 CI 比较次要的方面,因为 CI工具所做的仅仅是在代码存储库中探测到修改时运行构建。构建过程本身比用来运行它的工具重要得多。

开始使用 CI

开始使用 CI 需要三个组件:

  • 用 Ant 或 Maven 等工具建立的自动构建过程
  • 一个代码存储库,比如 CVS 或 Subversion
  • 一个 CI 服务器,比如 Hudson,但是 cron 作业也可以满足需要

我们来详细讨论这些组件。

自动的构建

CI过程会经常集成软件,这需要通过构建来完成。在 Java 环境中,Ant 是常用的构建平台。可以使用 Ant可靠地自动执行编译、测试 等任务,甚至可以执行软件检查和部署。在掌握了 CI 的所有组件之后,您会发现构建策略是成功的 CI过程最重要的方面。如果缺少适当的构建过程,CI 就难以发挥作用。

源代码 管理

为了让 CI 正确地发挥作用,需要一个源代码管理(SCM)系统 或存储库,比如 Subversion 或 CVS。CI 服务器向 SCM存储库查询代码修改。在找到修改时,CI服务器执行签出(即更新本地沙箱)并执行构建。除了执行得更频繁之外,构建过程与在本地环境中执行的构建相同。

CI 服务器

对 于成功的 CI 过程,需要用一个自动的过程监视 SCM 存储库并在探测到修改时运行构建,这也非常重要。对于 Java 平台,有许多可用的 CI服务器,包括开放源码软件和商业产品。它们的基本配置都很相似,适合监视特定的 SCM 并在探测到修改时运行构建。所有 CI服务器都有自己的优缺点。Hudson 尤其让人感兴趣,因为它容易配置而且具有强大的插件,这些插件可以显示测试结果趋势等信息。

二.Hudson 简介

Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI服务器吸取了许多经验 教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性。例如,一个 Hudson 插件可以随时间的推移跟踪FindBugs 和代码覆盖。它还可以报告测试结果的趋势(来自 JUnit 或 TestNG)以及构建结果和对应的执行时间。

Hudson 需要运行 Java 5。如果需要使用 Hudson 附带的嵌入式 容器(Winstone)之外的其他容器,那么只需使用一种 Servlet 2.4 容器。对于大多数情况,Winstone 就足够了。

三.Hudson使用

CI 过程的最后一个方面是 CI 服务器本身。CI服务器在整个开发过程中的主要作用是控制者:当服务器在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败 了,那么 CI服务器将通知相关方面,然后继续监视存储库。它的角色看起来是被动的;但是,它是快速反映问题的关键。

安装 Hudson

使用 Hudson 的主要好处之一是它的设置很简单。在最简单的情况下,Hudson 只需要两个步骤:

  1. 下载最新的版本(它打包为一个 WAR 文件)。 hudson官方网址:https://hudson.dev.java.net/
  2. 运行java -jar hudson.war

这样就可以了。因为下载的是一个 WAR 文件,所以如果愿意,可以将它部署在 Tomcat 或 JBoss 等容器中。这完全由您自己决定。当然,Hudson 假设在安装它的机器上运行着 Java 5,而且如果定义了JAVA_HOME 环境变量,Hudson 就会使用它。(正如前面提到的,Hudson 需要 Java 5。)

在安装并运行 Hudson 之后(将 WAR 文件部署到 servlet 容器或从命令行执行java -jar hudson.war ),启动浏览器并访问默认安装位置。如果通过命令行运行 Hudson 而且您在本地机器上,那么可以访问http://localhost:8080/


如果一切正常(实际上不太可能出问题),应该会看到图 2 所示的 Hudson 启动页面。

 

配置 Hudson

如果访问 Hudson 主页的本地实例并单击左上角的 Manage Hudson 链接,应该会看到图 3 所示的可配置选项列表。

图 3. 配置 Hudson 非常容易

参数说明:
system.message 填写一些说明信息
Quiet period:hudson定时构建工程的时间(秒)
 Enable security :设置hudson登陆的规则(默认为匿名登陆)
TCP port for JNLP slave agents:不了解JNLP不敢胡写总之就是三种方式:固定(fixed) 随机(Radom) 不使用(disabled),使用固定时可以填入JNLP信息

security realm:可以使用中间件容器,数据库,LDAP来验证安全,具体怎样用法没用过,以后会有更新,研究中.
authorized:可以设置身份的验证方法:系统用户,匿名用户,自定义用户,还有继承用户(此处也在研究中,建议使用匿名用户)
JDK installations:设置JDK的安装路径
Shell executable:设置window shell命令
Ant installation:设置ant 的安装路径
mave installation设置mave的安装路径
cvs executable:设置cvsnt执行进程的路径(cvs.exe)
.cvspass file:设置cvsnt管理员文件的路径(passwd文件)
e-mail notification:设置当发生错误时发送的邮箱地址
hudson url:就是hudson的默认地址

还 可以配置服务器的其他几个方面,比如向 Hudson提供一个电子邮件服务器的位置,以便在构建失败时接收电子邮件。根据您的组织设置电子邮件的方式,可能需要让系统管理员帮助设置这个特性。设 置电子邮件并不是必需的;Hudson 还支持以 RSS作为通知机制,对于某些人来说,这种方式比电子邮件更好。究竟选择哪些通知机制完全取决于您。(注意,这里说的是“哪些”,也就是说,可以同时使用 多种通知机制!)

在 Hudson 中配置项目

既然 Hudson 已经能够与 SCM 存储库通信了,就该配置项目了。这个示例所用的项目称为 solar-ci 。在 Hudson 主页上单击左上角的 New Job 链接。这时会看到图 5 所示的屏幕:



该页面可以使我们通过 hudson 来管理 cvs 里的一个对应的工程

 

Project name: 工程名称

Description: 描述信息

Discard build: 如果选择此项可以设置 build 记录保存的天数 , 或者 build 记录保存的数理 , 或者只保存最新的 build 记录 , 一般不需填写

Advance project options: 可以设置 hudson 定时检查 cvs 工程的时间间隔 , 还可以指定 cvs 工程 check out 到本地的工程路径 , 一般不需要填写

Source code management: 我们选择 cvs 将出现以下参数 :

Cvsroot: 将写 cvs 登陆字符串 , 格式 ( :protocol:user:password@host:path), 例如: :pserver:cvsadmin:1@127.0.0.1:2401:/CVSNT/Repository, 使用cvs 必填
 

Modules: 填写cvs 仓库下的具体工程名, 使用cvs 必填

Branch: 填写分支名称, 也可以勾选this is a tag,no a branch 指定标记名称
 

选择subversion 可以进行相应的subversion 设置

Build trigger 可以设置hudson 自动执行的一些动作,build after others projects are built 指定hudson 构建完成后需要继续构建的工程名

Build periodically 根据hudson 定义的语法规则来设定自动构建工程的时间间隔

Post-build actions

设置一些构建完成后的动作, 如放邮件, 打包, 产生测试报告, 产生java doc .

点击ok 保存设置

使用hudson
进入刚配置的项目, 可以在左侧build history 看到历史的build 记录, 点击build now 可以手动执行构建动作, 完成后可以通过记录标记的颜色来看是否出错, 红色有错, 蓝色成功. 点击记录查看详细信息, 如果有变化hudson 将列出类信息


elipse插件应用
eclipse updatesite:http://code.google.com/p/hudson-eclipse/
重新打开eclipse在windows->preferences下将出现hudson选项,设置默认的hudson url保存.
然后选择windows->open view打开hudson view
如果你己经配置hudson项目将列出hudson的项目名称,右键菜单可以看到所有的执行菜单,使用还是很方便的,希望大家来完善这篇文章.

 

分享到:
评论

相关推荐

    持续集成工具Hudson入门介绍(结合Ant)

    【标题】:“持续集成工具Hudson入门介绍(结合Ant)” 在软件开发过程中,持续集成是一种重要的实践,它强调开发者频繁地将代码集成到主分支,以便尽早发现并解决潜在问题。Hudson作为一款开源的持续集成服务器,...

    hudson3下载,持续集成工具,java项目自动发布部署工具

    hudson.war是基于Java研发的一款持续集成工具的安装包,hudson是一个可以扩展的持续集成引擎,主要是用它来监控一些定时执行的任务、持续、自动地构建/测试软件项目,有需要的欢迎下载使用。 hudson下载,放在tomcat...

    持续集成工具之Hudson

    【持续集成工具之Hudson】 持续集成(Continuous Integration, CI)是一种软件开发实践,它强调开发者频繁地将代码更改合并到共享存储库中,并通过自动化构建和测试来快速发现并解决问题。CI的主要目的是减少集成...

    持续集成开发工具Hudson资料收集

    Hudson是一个开源的、基于Java开发的持续集成工具,它的主要任务是监控持续的构建过程,确保软件项目在开发过程中始终保持可构建和测试的状态。持续集成(Continuous Integration,CI)是现代软件开发中的一个关键...

    集成工具hudson与maven2的Hudson 安装及配置.docx

    【集成工具Hudson与Maven2的Hudson安装及配置】 持续集成(Continuous Integration, CI)是一种软件开发实践,强调开发人员频繁地将他们的代码更改集成到主分支,以尽早发现并解决潜在的问题。Hudson是一款开源的...

    Hudson持续集成实战

    Hudson,作为一个开源的持续集成工具,被广泛应用于软件开发过程中,以提升效率,减少错误,并确保代码质量。在本教程中,我们将深入探讨Hudson的各个方面,包括安装配置、构建触发、测试集成以及自动化部署。 首先...

    使用Hudson持续集成 ppt

    综上所述,Hudson是一款强大的持续集成工具,它不仅提供了丰富的功能和灵活的配置选项,还能够与其他工具如Maven、Sonar等无缝集成,极大地提高了软件开发的效率和质量。对于任何希望采用持续集成实践的开发团队来说...

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

    《CI持续集成服务器Hudson使用备忘》 在软件开发过程中,持续集成(Continuous Integration,简称CI)是一种实践,它强调开发人员频繁地将他们的代码更改合并到共享存储库中,并且每次合并后都会立即进行自动化构建...

    hudson持续集成包

    【Hudson 持续集成工具详解】 Hudson 是一个开源的持续集成工具,主要用于自动化各种构建任务,如编译代码、运行测试、部署应用程序等。它的主要目标是提高开发团队的生产力,确保软件的质量,并在开发过程中提供...

    Hudson持续集成工具 v3.3.3.zip

    Hudson是一款开源的持续集成工具,它主要用于自动化各种任务,如构建、测试和部署软件项目。在版本3.3.3中,Hudson提供了一系列增强的功能和改进,以提升开发团队的工作效率和软件质量。 首先,持续集成是敏捷开发...

    Hudson持续集成实战.zip

    Hudson,作为一个开源的持续集成工具,被广泛应用于软件开发团队中,以自动化构建、测试和部署过程,确保代码的质量和项目的稳定性。它提供了丰富的插件支持,使得集成多种工具和服务变得简单易行。在本文中,我们将...

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

    本文将重点介绍Java领域的持续集成工具——Hudson,以及如何搭建和使用Hudson持续集成服务器。 首先,我们来了解什么是Hudson。Hudson是一个开源的持续集成工具,由Java编写,支持多种操作系统。它能自动构建、测试...

Global site tag (gtag.js) - Google Analytics