Use Hudson之项目构建

译自:http://wiki.hudson-ci.org/display/HUDSON/Building+a+software+project

 

一、构建一个普通项目 

   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中拥有项目的多个版本/分支,它将正确地判断依赖。

猜你喜欢

转载自jdonee.iteye.com/blog/545260