`
lovefly_zero
  • 浏览: 389902 次
  • 性别: Icon_minigender_1
  • 来自: 株洲
社区版块
存档分类
最新评论

Use Hudson之项目构建

    博客分类:
  • CI
阅读更多
一、构建一个普通项目 

   Hudson能够被用于执行特有的构建服务器工作,诸如持续的/正式的/整晚的构建、运行测试、或者执行一些可重复的批处理任务。这在Hudson中可被称作"free-style software project(自由风格式的软件项目)"。

1、创建工程

   跳转的Hudson首页,选择"New Job",输入一个作业名后,选择“Build a free-style software project”。这项作业类型包含如下的内容:

  • 可选择的SCM,如您源代码保存的CVS或者Subversion地址。
  • 可选择的触发器,以控制Hudson何时执行构建。
  • 一些构建脚本(ant,maven, shell 脚本, 批处理文件等等),当实际作业发生时执行构建。
  • 可选的构建后步骤,以用于收集构建结束后的信息,诸如归档构件、和/或记录javadoc和测试结果。
  • 可选的通知步骤,以用于把构建结果通知到其他人或者其它系统,诸如发送Email、即时信息、更新至问题跟踪系统等。

   如果要获得当前栏目更多的信息,请点击配置页面右侧的图标。

  Hudson设置环境变量

Hudson设置的一些环境变量可用于通过Hudson来执行shell脚本、Windows批处理文件和Ant文件。下面有一个环境变量的列表,以及告诉你如何来使用它们。

1.1构建非源码控制的项目

    有时候,构建一个项目仅仅是用于演示目的,或者难以获得连接的SVN/ CVS仓库。通过选择配置项目"Source Code Management"下的"None" 时,您将只能:

  1. 只少构建一次项目(它会失败),但是Hudson会创建HUDSON_HOME/jobs/PROJECTNAME/workspace这样的结构。
  2. 复制该项目文件至HUDSON_HOME/jobs/PROJECTNAME/workspace下。
  3. 再构建并且适当地配置。

1.2Hudson设置环境变量

    当一个Hudson作业执行时,它会设置一些环境变量,以便于您在您的shell脚本、批处理命令或ant脚本中使用它们。下表包含了这些环境变量的列表。

环境变量 

描述
BUILD_NUMBER 当前的构建编号,如“153”。
BUILD_ID 当前的构建ID,如"2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
JOB_NAME 该构建的项目名称。这是一个您第一次创建它时你给你作业的名称。它出现在Hudson面板主页中的第三栏中。
BUILD_TAG 关于hudson-${JOBNAME}-${BUILD_NUMBER}的字符串。放入到一个资源文件、一个Jar文件等时以方便识别。
EXECUTOR_NUMBER 唯一号,用于在执行这次构建时识别当前执行人(同一天机器可能有多个执行人)。这个数字你能通过“build executor status”查看,但是该数字是从0开始的,而不是1。
JAVA_HOME  如果你的作业配置为使用指定的JDK,那么这个变量则为指定的JDK设置JAVA_HOME 环境变量。一旦这个变量设置,PATH也就同步更新了$JAVA_HOME/bin。
WORKSPACE 工作区的绝对地址。
SVN_REVISION 对基于Subversion的项目,该变量包含该模块的版本号。如果您有指定多个模块,该环境变量将不会被设置。
CVS_BRANCH

对基于CVS的项目,该变量包含该模块的分支。如果CVS配置为签出主干,该环境变量将不会被设置。

1.2.1Shell脚本和Windows批处理命令

   如果你使用一个shell脚本来完成你的构建,你可以把这些环境变量直接插入到你的shell脚本,或者在你的脚本中把它们作为参数调用。下面的例子将告诉你如何做:



 
   如果你正在执行一个Windows批处理命令,该变量将参照使用%VARIABLE_NAME%模式。譬如:


1.2.2Ant脚本

   如果你使用Ant 脚本来完成你的构建,你可能会在属性设置中包含环境变量。点击 Advanced... 按钮下方正好显示你想要构建的Ant目标。这将显示Properties框。下面的例子告诉你如何使用Hudson环境变量在Properties 框中设置Ant 属性值。



 

   另外,您可以使用env作为在你的build.xml文件中属性里推入所有环境变量的前缀。下面的例子告诉你怎么在"label" 属性中包含项目名称和构建号:

<property environment="env"/>
<property name="label" value="${env.JOB_NAME}-${env.BUILD_NUMBER}"/>

2、配置自动化构建

   在Hudson的构建可以定期触发(在配置中指定一个计划),或者在项目请求的URL被发现有变化时自动触发:

http://YOURHOST/hudson/job/PROJECTNAME/build

   这允许您创建多样化的Hudson构建。更多详情(特别是在做安全激活模式时)请参阅Remote access API.



 
 
另外,如果您想当Hudson启用安全时从脚本中触发构建,从您项目的配置页选择"Trigger builds remotely"选项,然后在那里添加一个授权标记。现在您就能通过下面的网址触发您的构建:
http://YOURHOST/hudson/job/PROJECTNAME/build?token=YOUR_TOKEN_HERE

2.1通过e-mail(sendmail)构建

   如果您有您系统的Root账户,并且您能使用sendmail[在Unix系统的用户中,Sendmail是应用最广的电子邮件服务器。],我发现它很容易调整/etc/aliases,然后添加下列条目:

hudson-foo: "|/bin/wget -o /dev/null http://YOURHOST/hudson/job/PROJECTNAME/build"

  然后运行“newaliases”命令,让sendmail获取变化。每当有人发送电子邮件到"hudson-foo@yoursystem",这将触发一次新的构建。关于配置sendmail的更多信息请参阅这里

2.2通过e-mail(qmail)构建

  使用qmail[它是一个用来代替UNIX下Sendmail软件的邮件传送程序],您可以按如下方式写/var/qmail/alias/.qmail-hudson:

|/bin/wget -o /dev/null http://YOURHOST/hudson/job/PROJECTNAME/build"

2.3当CVS变化时构建

  每当有人在版本库中提交一次变化就执行构建、也可以从/CVSROOT/loginfo中调用上述程序,或接通CVS通知邮件作为解释媒介。或者你能配置Hudson当发现您的源码控制系统有变化时定期生成和开始新构建。

 

 

二、构建一个Maven2项目

 

   Hudson专门为 Maven2提供了一个作业类型。这个作业类型使Maven2高度集成在Hudson中,并且提供了比一般自由风格软件项目更好的功能。

  • Hudson解析Maven POMs以获得它所需作业的很多信息。因此,需要配置的数量大幅度减少。
  • Hudson监听Maven的执行然后计算该什么时候调用它们。比如,它会在Maven运行测试阶段时自动记录JUnit报告。又假如您运行JavaDoc目标时,Hudson自动记录JavaDoc.

   因此,大多数时候您只需要配置SCM信息,然后按您想要的目标运行,Hudson将计算这一切。

 

1、从模块依赖中自动化构建链接

   Hudson从你的POM中读取你项目中的依赖,如果它们也在Hudson构建过,触发器设置这样一种方式,当您的项目开始一次新构建时自动把这些依赖加入到新构建中。Hudson理解POM中的各种依赖。也就是下面的,

  • 父POM
  • 你项目中的<dependencies>选项
  • 你项目中的<extensions>选项
  • 你项目中的<reporting>选项

  该过程会考虑版本的作用,所以您可以在同一个Hudson中拥有项目的多个版本/分支,它将正确地判断依赖。

  • 大小: 634 Bytes
  • 大小: 1005 Bytes
  • 大小: 569 Bytes
  • 大小: 28.4 KB
  • 大小: 4.5 KB
  • 大小: 47 KB
分享到:
评论
3 楼 lovefly_zero 2013-09-08  
wv1124 写道
使用Hudson调用shell执行make,编译失败hudson确显示成功,如何让hudson显示失败?

能给我看看你的实际情况吗,比如截图等等。
2 楼 wv1124 2013-07-24  
使用Hudson调用shell执行make,编译失败hudson确显示成功,如何让hudson显示失败?
1 楼 lhs295988029 2012-11-07  
如果你正在执行一个Windows批处理命令,该变量将参照使用%VARIABLE_NAME%模式。

这正是我想要的,谢谢啦。

相关推荐

    hudson自动构建文档

    搭建Hudson平台主要包括设置工作目录、配置Jenkins(Hudson的后续项目)环境变量、安装必要的插件以及创建新的构建项目。工作目录用于存储构建结果、日志和其他相关数据。环境变量确保Hudson能正确找到编译器和其他...

    hudson svn maven 自动构建

    【标题】"Hudson SVN Maven 自动构建"指的是在持续集成环境中使用Hudson(现在称为Jenkins)作为工具,结合Subversion(SVN)作为版本控制系统,Maven作为项目管理和构建工具,实现代码的自动构建过程。这个流程的...

    hudson每日构建

    Maven基于项目对象模型(Project Object Model, POM),提供了一种标准化的方式来管理项目依赖、构建过程和报告。Ant则是一个基于XML的任务执行工具,更加灵活,但配置相对复杂。Hudson可以轻松地与这两种工具配合,...

    hudson教程

    3. **构建设置**:保存配置后,Hudson会尝试构建项目。初次构建可能会失败,因为需要设置权限。此时,你可能需要在命令行中输入Hudson的登录密码以及Git的凭证。 4. **构建成功**:当Hudson成功执行构建并显示...

    hudson-3.3.1.war

    For Production use, Hudson 3.3.1 from the Eclipse Foundation is now available. This WAR file is suitable for any O/S. We recommend that users of 3.0, 3.1, 3.2 or 3.3.0 upgrade to this release. his ...

    hudson学习教程Hudson安装与使用,Hudson配置,Hudson插件

    【Hudson 学习教程】 Hudson 是一款强大的持续集成工具,主要负责自动化软件...通过熟练掌握Hudson的安装、配置和插件使用,开发者可以构建出一套自动化、智能化的CI/CD流程,提升整个团队的开发效率和项目交付能力。

    HUDSON持续集成MAVEN项目

    在本教程中,我们将探讨如何设置和配置HUDSON,以便有效地管理和自动化Maven项目的构建过程。 首先,我们需要了解HUDSON(Jenkins)是一个开源的持续集成服务器,它提供了丰富的插件支持,能够与各种版本控制系统、...

    Ruby在Hudson上的分布式构建.pdf

    文章还提到了分布式构建对Hudson的重要性,说明了它使得Hudson能够管理大量项目,并能够在不同的客户端上并行运行构建任务。此外,Hudson提供了对客户端资源监控和环境变量设置等管理功能,这进一步增强了其作为...

    Hudson持续集成实战

    在本教程中,我们将深入探讨Hudson的各个方面,包括安装配置、构建触发、测试集成以及自动化部署。 首先,我们来理解一下什么是持续集成(Continuous Integration,CI)。持续集成是一种软件开发实践,要求开发者...

    Hudson平台搭建及使用

    - **项目监控**:Hudson提供实时的构建状态、测试报告和执行时间,便于团队掌握项目进度。 2. **Hudson平台搭建** - **安装JRE**:确保系统安装了Java 5或更高版本的Java运行时环境(JRE)。 - **安装Tomcat**:...

    m2eclipse-hudson插件

    3. **配置集成**:插件简化了Hudson服务器与Eclipse项目之间的配置,可以方便地设置构建触发器、构建参数和工作空间。 4. **视图集成**:在Eclipse的工作区中,开发者可以查看Hudson服务器上的所有项目,以及它们的...

    hudson安装全过程

    Hudson是一款开源持续集成工具,主要用于自动化构建、测试软件项目,支持多种SCM(如Git、SVN等),并且可以通过插件扩展功能。本文将详细介绍Hudson的安装过程,包括JDK环境配置、Tomcat服务器部署以及Hudson自身的...

    Hudson配置手册完美教程

    Hudson 是一款强大的持续集成工具,其主要目标是实现软件项目的自动化构建和测试。作为一款可扩展的引擎,Hudson 提供了多种功能,使得开发者能够更有效地管理和监控他们的开发流程。 Hudson 的核心特性包括: 1. ...

    hudson持续集成包

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

Global site tag (gtag.js) - Google Analytics