Luntbuild - 自动化构建与管理,用户手册


目录

1. 介绍
2. 登录到Luntbuild
3. Luntbuild主页
4. 设置Luntbuild的系统属性
5. 添加Luntbuild用户
6. 创建一个项目
7. 为项目指定版本控制系统
7.1. 设置AccuRev连接信息
7.2. 设置Clearcase基本连接信息
7.3. Setting Cvs connection information.(设置Cvs连接信息)
7.4. Setting File system connection information.(设置文件系统的连接信息)
7.5. Setting Perforce connection information.(设置Perforce连接信息)
7.6. Setting Subversion connection information.(设置Subversion的连接信息)
7.7. Setting Clearcase UCM connection information.(设置Clearcase UCM的连接信息)
7.8. Setting Visual Sourcesafe connection information.(设置VSS连接信息)
7.9. Setting StarTeam connection information.(设置StarTeam连接参数)
7.10. Using multiple Version Control Adaptors.(同时使用多个VCS连接)
8. 新建VCS模块
8.1. 设置AccuRev模块信息
8.2. 设置cvs模块信息
8.3. 设置Perforce模块信息。
8.4. 设置Subversion模块信息
8.5. 设置VSS模块信息
8.6. 设置StarTeam模块信息
9. 创建项目的Builder
9.1. 配置Ant Builder
9.2. 配置命令行Builder
9.3. 配置Maven Builder
10. 创建项目的构建计划
11. 定义项目的登录映射表
12. 创建/修改项目的Ant Builder
13. 创建修改项目的Maven Builder
14. 构建计划的快照
15. 项目快照
16. 使用Luntbuild远程调用接口
17. 调试构建过程中的问题
18. Luntbuild安全性
18.1. 整体安全概念一览
18.2. 怎样配置Luntbuild的安全
19. 数据导出和导入
19.1. 数据导出
19.2. 数据导入
19.3. 通过导出和导入功能来进行数据迁移
A. 构建时支持的OGNL 表达式

第 1 章 介绍

原著:Luntbuild Team, 翻译:Melthaw Zhang [RedSaga]

Luntbuild是一种基于流行的构建工具-- Apache Ant-- 的自动化构建和管理工具。 通过Luntbuild,可以很容易做到日构建和持续集成。如果您对日构建和持续集成并不熟悉, 请参考一下关于日构建和持续集成的文章。

首先,Luntbuild团队感谢您选择Luntbuild作为您持续集成的工具,同时,我们注意到,现在市场上还有很多 现成的持续集成的工具,到底该选择哪一种,需要您自己做出判断。下面这篇文章对现有的持续集成工具 进行了很好的横向比较,也许这篇文章对您的抉择有所帮助: Continuous Integration Server Feature Matrix.

您可以通过Luntbuild示例 来了解Luntbuild的功能。也可以通过阅读FAQ 进一步学习Luntbuild。

在Luntbuild里面最基本的操作单位是一次构建(build). 构建通过构建计划(Schedule)触发,也可以通过手工启动。 在Luntbuild里面一次构建会经过以下几个步骤:

  1. 从版本控制系统(VCS)中获取源码。

  2. 对当前源码打上标签,标签值就是当前构建的版本号.

  3. 在源码目录下运行相关的Ant/Maven/Command构建脚本(build script)。

  4. 在源码目录下运行相关的Ant/Maven/Command构建后处理脚本(post build script)。

  5. 发布构建的日志以及其他构建制品(build artifacts)。

构建的配置,监视,以及访问构建制品这些操作全部都通过web这种直观的方式来完成。 开发和测试团队集中式的获取这些构建信息。

第 2 章 登录到Luntbuild

激动的时间来到了,我们现在要做第一次登录Luntbuild的表演。Luntbuild的登录页面如下:

Luntbuild登录页面

登录页面要求您输入Name(用户名)Password(口令). 第一次登录请用默认的管理员帐号luntbuild/luntbuild(分别作为用户名和口令),如果您修改了安全配置,那么请使用 您在applicationContext.xml文件里面指定的口令(详情请参考 Luntbuild安全)。 登录以后您可以创建新的用户。

登录页面右上角有两个图标。这两个图标在所有的Luntbuild页面里都有,其中 链接到Luntbuild 用户指南。 而 链接到Luntbuild官方web站点。

输入用户名和口令之后,点击login(登录)按钮(或者直接按回车键)即可登录到Luntbuild系统。

第 3 章 Luntbuild主页

成功登录后将会进入Luntbuild主页:

Luntbuild主页

在主页上有五栏,分别是:

  1. Builds(构建清单) - 概括显示当前的Luntbuild构建

  2. Projects(项目列表) - 显示所有的Luntbuild项目

  3. Users(用户列表) - 显示所有的Luntbuild用户

  4. Properties(系统属性) - 显示Luntbuild的一些系统属性

  5. Administration(系统管理) - 显示Luntbuild管理任务,例如导入/导出(import/export)

点击各栏就可以进入相应的页面。

每个页面的顶端是导航区 , 导航区将帮助您在Luntbuild的不同页面间进行快速切换。例如:如果您正在创建一个新的项目(通常是点击Project(项目)页上的New(新建)图标), 您可以通过点击导航区的Home(主页)快速返回主页面。

如果您在运行Luntbuild的时候遇到什么问题了,点击每一页右上角的system log(系统日志), 然后就会进入Luntbuild的系统日志页面。关于调试构建过程中遇到的问题, 详情请参考调试构建中的问题

每页的右上角还包含了刷新按钮 , 该按钮可以设置页面自动刷新功能为启动或者关闭状态。如果您正在跟踪运行中构建的状态,那么设置为自动刷新状态是个不错的选择。

如果要退出Luntbuild,只需要点击右上角的logout(退出)链接。

第 4 章 设置Luntbuild的系统属性

在Properties(系统属性)页里面列出的属性将会影响所有的Luntbuild项目。Luntbuild的系统属性详细解释如下:

Url to access luntbuild servlet(访问luntbuild的Servlet的url)

在此指定访问Luntbuild的Servlet的url,在邮件通知里面会用到servlet url,因此设置正确的servlet url是很重要的。 通常这个的值的格式为http://<server>:<port>/luntbuild/app.do,其中<server> 是您的构建服务器的名字或者ip地址,而<port>是访问Luntbuild的端口号。 如果这个属性没有设置,那么Luntbuild将会使用默认值http://<server_ip>:8080/luntbuild/app.do, 其中<server_ip>是构建服务器的实际ip地址。

Work directory(顶层工作目录)

您可以根据需要指定Luntbuild的顶层工作目录,通常情况下,Lunbuild里面配置的各个项目会在该目录下建立 子目录(以项目名称命名)作为本项目自己的工作目录,用来从版本控制系统中检出源码。 如果没有指定该顶层工作目录,Luntbuild将使用Lunbuild安装目录下的work 子目录作为顶层工作目录。

Publish directory(发布目录)

您可以根据需要指定Luntbuild的顶层发布目录。每个产生的构建都会在该目录下建立子目录作为自己的发布 目录,用来存放该构建产生的制品,如日志和其他发布文件。该子目录格式为<project-name>/<schedule-name>/<build-version>。 如果没有指定该顶层发布目录,Luntbuild将使用Luntbuild安装目录下的publish 子目录作为顶成发布目录。

Page refresh interval(页面刷新时间间隔)

您可以以秒为单位指定页面刷新的时间间隔。如果没有设置该属性,那么默认值为15秒。

SMTP host(SMTP主机)

您可以根据需要指定SMTP邮件服务器,Luntbuild将通过它发送邮件通知。如果没有设置该属性, Luntbuild将使用本地机作为默认值。

SMTP user(SMTP用户)

该属性为可选属性,如果SMTP主机需要安全认证,那么您应该设置该属性来指定认证的用户名。

SMTP password(SMTP口令)

该属性为可选属性,该口令为上面的SMTP用户对应的口令。

Luntbuild Jabber account(Luntbuild Jabber帐号) - 如果您想通过Jabber通知用户,那么您在此需要设置Jabber有关的属性。

Luntbuild需要Jabber帐号用于发送Jabber消息。

注意

目前还不支持通过代理方式访问Jabber

Jabber server(Jabber服务器)

您可以根据需要指定Jabber服务器,用于发布Jabber消息。如果该属性没有设置,那么Luntbuild将使用本地机作为默认值。

Jabber server port(Jabber服务器端口号)

连接Jabber服务器的端口号,默认值5222。

Jabber user(Jabber用户)

在此设置Jabber帐号名,Luntbuild使用Jabber帐号来登录Jabber服务器并发送消息。

Jabber password(Jabber口令)

Jabber帐号对应的口令。

Luntbuild MSN account(Luntbuild MSN 帐号) - 如果您想通过MSN通知用户,在此设置有关的属性。

Luntbuild可以通过MSN帐号N来发送创建通知信息。 例如luntbuild@hotmail.com

注意

目前还不支持通过代理方式访问MSN

Luntbuild MSN password(Luntbuild MSN 口令)

MSN帐号的口令。

第 5 章 添加Luntbuild用户

在一个多人团队里使用Luntbuild,首先应该先创建好Luntbuild用户,并分配适当的权限,即使该团队只有您一个人。 Luntbuild的用户可以收到构建状态的通知,同时被授权访问Luntbuild的不同部分。

创建Luntbuild用户的步骤:首先点击Users(用户),然后点击new(新建)图标(该图标在该页的右上角),然后进入以下页面:

新建用户

填写以下信息:

Name(用户名)

在此提供一个唯一的名字用来确定一个用户。这个属性的值用于显示和登录。

Full name(全名)

用户的全名

Can create project?(是否具有创建项目的权限)

勾上checkbox既给用户赋予创建新项目的权限。

Password(口令)

在此提供一个初始化的口令(用户以后可以修改)。

Jabber account(Jabber帐号)

在此指定用户的Jabber帐号,例如:johndoe@jabber.org。 关于Jabber的详情请参考 jabber.org

Email(电子邮箱)

在此指定用户的电子邮箱。

MSN account(MSN帐号)

在此指定用户的MSN帐号,例如:foobar@hotmail.com

第 6 章 创建一个项目

点击Project(项目)栏。

项目页面显示了当前的Luntbuild实例下所有的项目配置信息。 一个项目就是一个可以构建的单元,在其中配置了和构建有关的信息,例如:版本控制系统,项目Builder,构建计划等等。

点击页面右上角的New Project(新建项目)图标

创建项目

Name(项目名)

提供一个唯一标识的项目名称。 请牢记对于每一个项目,都会在Luntbuild顶层工作目录和顶层发布目录下创建相应的子目录,而该子目录的名字就是项目名。

Description(描述)

项目的描述信息。

Project admins(项目管理员)

在此选择角色为'project admin'的用户

Project builders(项目构建者)

在此选择角色为'project builders'的用户

Project viewers(项目参与人员)

在此选择角色为'project viewers'的用户

Notification methods(通知方式)

在构建后以何种方式通知相关人员

Notification users(被通知的用户)

在项目构建完成后接收通知的用户

Variables(变量)

定义项目有关的变量,每行定义一个变量,例如

a=1
b=2

可以在其他的OGNL表达式中引用或者指定这里定义的变量,例如, 在设置构造构建计划的"next build version"属性的时候可以直接引用这里定义的变量。 数字型的变量可以递增或递减,例如,如果您有两个构建计划分别为"nightly"和 "release", 并希望发生在这两个计划的构建共享同一个递增的版本号,那么您可以定义下面这样的变量:

versionPart=foo-1.0.0
iterationPart=1

然后设置这两个构建计划的"next build version"属性。

${project.var["versionPart"]} (${project.var["iterationPart"].increaseAsInt()})

通过这种方式,这两个构建计划的构建版本号将会包括两个部分:第一部分为"versionPart"的值,第二部分为"iterationPart" 的值,而"iterationPart"会随着每次构建而递增。最终构建的版本号就是下面这个样子:

foo-1.0.0 (build 1)
foo-1.0.0 (build 2)
foo-1.0.0 (build 3)
...

您还可以定义许多其他类型的版本策略,详情参考构建计划的 next build version 属性。

Log level(日志级别)

定义项目的日志级别,将会影响到构建日志的详细程度。

    第 7 章 为项目指定版本控制系统

    首先选择“VCS Adaptors”控制面板标签

    点击该面板右上角"New VCS Adaptor"图标。

    选择版本控制系统

      7.1. 设置AccuRev连接信息

      以下地址可以下载AccuRev: http://www.accurev.com/download/index.htm. 下面是该适配器的属性列表:

      AccuRev port(AccuRev端口号)

      AccuRev 端口号的格式为<servername>:<port>,其中<servername> 和 <port> 应该用实际的AccuRev的服务器名和端口号代替。 该属性是可选的,该属性的值会覆盖acclient.cnf值。

      注意

      AccuRev的默认配置信息定义在acclient.cnf 和wspaces 文件里面. 详情请参考AccuRev 用户手册。

      Path for accurev executable(accurev的执行路径)

      在该目录下保存accurev的可执行文件 如果如果系统目录下没有包含accurev的可执行文件,那么应该放在 在该目录下。

      Quiet period(等待周期)

      从VCS check out代码来进行创建之前的等待周期(也就是多长时间没有用户check in),以秒为单位。 这是为了避免在其他人正在做check in的过程中check out代码。 该属性为可选,如果该属性没有设置,那么在check out代码出来创建之前不会有等待周期。

      7.2. 设置Clearcase基本连接信息

      首先在用于创建的机器上必须安装了Clearcase客户端。 同样您还应该保证启动您的应用服务器或者servlet容器的帐号能够访问Clearcase服务器,而且能做视图快照。 下面是该连接的属性列表。

      Clearcase view stgloc name(Clearcase view stgloc名称)

      Clearcase 服务器端视图存储的位置,该属性用于创建当前项目的Clearcase视图的stgloc选项值。 该属性和"Explicit path for view storage"只指定一个即可

      Explicit path for view storage(明确的视图存储路径)

      只有"Clearcase view stgloc name"属性没有指定的时候该属性才需要。 如果指定了,那么创建当前项目的Clearcase视图的时候,该值将作为-vws选项值代替-stgloc选项

      注意

      在Windows平台上该值应该是可写的UNC路径。

      Config spec(配置说明)

      Config spec 用于创建Clearcase快照视图

      Modification detection config(修改检测配置)

      如果在上述的Config spec下指定要获取某些分支下的最新版本,这个时候该属性有效。Luntbuild用 该属性来决定自上一次创建后资料库是否发生了改变。该属性包括了多种条目,每个条目的格式为 "<path>[:<branch>]" 其中<path>是VOB下的路径,该值对于上述的config spec是可见的。对于该目录下的任何子目录, Luntbuild会检查clearcase服务器端内容是否发生了变化。 如果<branch>指定了,那么Luntbuild将会检查指定的分支里的内容是否发生了变化。 多个条目可以通过";"符号或者多行来区分。

      Extra options when creating snapshot view(创建快照视图的扩展选项)

      当您使用Luntbuild为当前项目创建有关的Clearcase快照视图的时候,可以执行mkview sub命令的命令行选项。 可以指定的命令行选项包括-tmode, -ptime, and -cachesize,例如您可以指定"-tmode insert_cr",这样就使用 Windows的文本行终结符。

      Path for cleartool executable(cleartool执行的路径)

      cleartool可执行文件所在的路径。如果在系统的路径下找不到cleartool的可执行文件,就会在 这里设置的目录下找。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.3. Setting Cvs connection information.(设置Cvs连接信息)

      如果您使用的是Windows平台,首先在您的平台上安装相应的CVS客户端,可以从下面的网站下载相应的安装包 http://www.cvshome.org 或者 http://www.cvsnt.org

      注意

      请保持构建服务器和CVS服务器在时间上的同步,这样构建服务器才能更精确的检测到cvs服务器上代码库的变化。 还有就是记录在cvs变更日志里面的时间格式为UTC格式,而不是本地的时间格式。

      下面是cvs连接的一些属性

      Cvs root(CVS root)

      例如:pserver:administrator@localhost:d:/cvs_repository。 如果您的连接方式是ssh,请设置:ext:协议,并且要设置好ssh相应的环境,这些设置都在都在Luntbuild外进行。 详情参考cvs用户指南。

      Cvs password(Cvs口令)

      使用pserver协议来连接的CVS口令

      Is cygwin cvs?(是否使用的cygwin的cvs)

      该属性指要使用的cvs是否是cygwin下的cvs? 可选的值为"yes"或"no",默认值为"no"。

      Disable "-S" option for log command? (禁止log命令的"-S"选项)

      该选项用来设置log命令的"-S"选项是否禁止? 可选的值为"yes"或"no",默认值为"no"。 在log命令中使用-S选项可以加速对cvs代码库中发生变化的检测, 不过早期的cvs并不支持该选项。如果是早期的cvs版本,请输入"yes"来禁止该选项。

      Disable history command?(禁止history命令)

      该属性用来设置在检测CVS代码库的变化的时候是否禁止history命令。 可选的值为"yes"或"no",默认值为"no"。 和log命令一起使用history命令可以加速对cvs代码库中发生变化的检测, 但是,有些cvs代码库并没有保存commit的历史信息,这种情况下,应该使用"yes"来禁止该命令。

      Path for cvs executable(CVS执行的路径)

      cvs可执行文件所在的路径。如果在系统路径下找不到cvs的可执行文件,就会在 这里设置的目录下找。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.4. Setting File system connection information.(设置文件系统的连接信息)

      Source directory(源目录)

      该属性为可选属性。如果指定了,那么会以文件的修改时间为检测对象来检测源目录内容的变化。 所有检测到的已修改的文件将会复制到项目工作目录下,并在此基础上进行构建。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.5. Setting Perforce connection information.(设置Perforce连接信息)

      首先应该在构建的机器上安装Perforce客户端。关于许可证信息请联系http://www.perforce.com。 下面是该连接的属性列表:

      Perforce port(Perforce端口)

      Perfoce端口格式<port>, 或者 <servername>:<port>, 其中<servername> 和 <port> 将被实际的Perforce服务器名和端口代替。

      User name(用户名)

      在此指定访问Perfoce服务器的用户名。该用户应该有创建和修改客户端描述符(client specifications)的权限, 还应该有检出代码以及给代码打上标签的权限。

      Password(口令)

      Perforce用户对应的口令。如果Perforce没有使用基于口令的安全机制,那么这里口令可以为空。

      Line end(行结束符)

      设置客户文本文件的行结束符。目前可设置的值如下:

      local: use mode native to the client
      unix: UNIX style
      mac: Macintosh style
      win: Windows style
      share: writes UNIX style but reads UNIX, Mac or Windows style

      该属性为可选属性。如果没有指定,那么默认值为"local"

      Path for p4 executable(p4执行的路径)

      P4可执行文件所在的路径。如果在系统的路径下找不到cvs的可执行文件,就会在 这里设置的目录下找。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.6. Setting Subversion connection information.(设置Subversion的连接信息)

      首先请在您的构建服务器上安装好Subversion的客户端。 subversion的下载地址为http://subversion.tigris.org.

      注意

      请保持构建服务器和Subversion服务器在时间上的同步,这样构建服务器才能更精确的检测到Subversion服务器上代码库的变化。

      下面是Subversion连接的属性列表:

      Repository url base(代码库的“根”url)

      Subversion的“根”url,例如:"svn://buildmachine.foobar.com/"或者"file:///c:/svn_repository" 或者"svn://buildmachine.foobar.com/myproject/othersubdirectory",等等。 其他的例如标签的目录,分支的目录,模块等等都是相对于该“根”url的。

      注意

      如果使用https的方式访问subversion服务器,那么您需要配置Luntbuild的构建机器, 让它事先永久接受subversion服务器颁发的安全证书(具体可以参见subversion的用户说明)。

      Directory for trunk(trunk目录)

      指定在上述根url下用于存放主分支代码(trunk)的目录。该目录是根url的相对目录。 如果在根url下没有定义任何trunk目录,那么该属性的值为空值。

      Directory for branches(分支目录)

      指定在上述根url下用于存放分支代码的目录。该目录是根url的相对目录。 如果不设置该属性,那么Luntbuild将采用默认值,即"branches"。

      Directory for tags(标签目录)

      指定在上述根url下用于存放标签的目录。该目录是根url的相对目录。 如果不设置该属性,那么Luntbuild将采用默认值,即"tags"。

      Username(用户名)

      登录Subversion的用户名。

      Password(口令)

      登录Subversion的用户的口令。

      Path for svn executable(svn执行的目录)

      svn可执行文件所在的路径。如果在系统的路径下找不到svn的可执行文件,就会在 这里设置的目录下找。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.7. Setting Clearcase UCM connection information.(设置Clearcase UCM的连接信息)

      首先需要在构建服务器上安装Clearcase客户端。 同时还要确保运行应用服务器和servlet容器的帐户能够访问Clearcase服务器,并且能够创建快照视图。 下面是该连接的一些属性:

      Clearcase view stgloc name(Clearcase视图存储位置的名字)

      在此指定Clearcase视图存储位置的名字,其值将作为创建Clearcase视图的stgloc选项的值。

      Project VOB tag(项目VOB标签)

      在此指定项目vob的标签,例如\pvob1

      Explicit path for view storage(视图存储位置的路径)

      如果"Clearcase view stgloc name" 属性的值为空,那么本属性的值就必须设置。 如果指定了本属性的值,其值作为创建Clearcase视图的-vws选项的值,并且会代替原来使用的-stgloc选项。

      注意

      This value should be a writable UNC path on Windows platform.

      UCM stream name(UCM流)

      在此指定UCM流的名字。

      What to build(构建对象)

      指定在UCM流内部要构建的基线。如果要指定多个基线,那么中间用空格分开。 下面的值具有特殊的意义:

      <latest>: 基于每个组件最新的代码进行构建。
      <latest baselines>: 基于每个组件最新的基线进行构建。
      <recommended baselines>: 基于推荐的基线进行构建。
      <foundation baselines>: 基于所有的最基础的基线进行构建。

      Modification detection config(检测变化的配置)

      当"What to build"属性的值为"latest"时,本属性的值有效。 Luntbuild用该属性来决定自上一次创建后资料库是否发生了改变。该属性包括了多种条目,每个条目的格式为 "<path>[:<branch>]" 其中<path>是VOB下的路径,该值对于上述的config spec是可见的。对于该目录下的任何子目录, Luntbuild会检查clearcase服务器端内容是否发生了变化。 如果<branch>指定了,那么Luntbuild将会检查指定的分支里的内容是否发生了变化。 多个条目可以通过";"符号或者多行来区分。

      Extra options when creating snapshot view(创建快照视图的扩展选项)

      在通过Luntbuild来创建当前项目有关的clearcase的快照视图的时候,您可以有选择性的指定mkview sub命令的扩展选项。 目前可以指定选项限定为-tmode, -ptime, 和 -cachesize。例如,您可以指定"-tmode insert_cr",这样可以使用Windows 的行结束文本模式。

      Path for cleartool executable(clearcase工具执行的路径)

      在此指定clearcase工具可执行文件所在路径,如果这些可执行文件不在系统路径下,就应该在此指定其所在的目录。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.8. Setting Visual Sourcesafe connection information.(设置VSS连接信息)

      首先在构建服务器上安装VSS软件,下载地址http://download.microsoft.com。 下面是VSS连接的属性:

      注意

      为了VSS的history命令的准确性,所有开发机,构建服务器的时间设置要保持同步。

      Sourcesafe path(Sourcesafe路径)

      该目录是srcsafe.ini文件所在目录。例如:\\machine1\directory1 这个路径名要么用主机名要么用主机的ip地址,而且要确保运行应用服务器或者servlet容器的帐号事先已经登录 到这台机器上,否则在构建时Luntbuild会汇报一个“No VSS database found”的错误。

      Username(用户名)

      登录该VSS的用户名。

      Password(口令)

      上面指定的用户的口令。

      Datetime format(日期时间格式)

      指定VSS的history命令的日期时间格式。该属性为可选属性,如果该属性的值为空,那么Luntbuild将使用 默认值"M/dd/yy;h:mm:ssa"。 默认值只适合使用US的英文操作系统。 对于其他的使用英语的国家,例如英国,澳大利亚,加拿大,VSS使用的时间格式为(假设VSS的本地语言已经设置为相应的值):

      		'd/M/yy;H:mm'
              

      如果Luntbuild运行的操作系统为非英文的操作系统,可以通过以下方法决定使用的日期时间格式:

      打开安装在您的构建服务器上的VSS,选择一个现有的VSS数据库,然后查看里面的项目和文件。 在文件列表框里面有几栏,其中一栏是"Date-Time"。可以使用这个位置相应的"datetime format"(日期时间格式)。 例如,如果其中一个的值为 "04-07-18 20:19",那么相应的"datetime format"(日期时间格式)为 "yy-MM-dd;HH:mm" 注意在日期和时间之间的semicolon(分号)一定要指定。 在这里鼓励大家将该属性设置为"yy-MM-dd;HH:mm:ss",这样可以提高精确度。 例如,如果VSS里面的日期时间为"7/18/04 8:19p",那么相应的"datetime format"(日期时间格式) 为"M/dd/yy;h:mma"。 这个时候如果设置为 "M/dd/yy;h:mm:ssa",那么可以增加准确性。

      下面是从JDK文档中节选的部分格式化字符的信息:

      表 7.1. Date/Time format characters(日期时间格式化字符)

      字符解释例子
      y1996 ; 96
      M(一年中的)月July ; Jul ; 07
      d(一个月中的)日10
      aAm/pm(上下午)标志p
      H(一天中的)小时,范围(0-23)0
      h(上午或下午的)小时,范围(1-12)12
      m(小时中的)分钟30
      s(分钟中的)秒55

      详情参考 http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

      Path for ss.exe(ss.exe文件所在路径)

      在此指定ss.exe文件所在的路径,如果ss.exe文件不在系统路径下面,Luntbuild就会使用这个属性的值作为寻找该ss.exe 文件的目录。

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.9. Setting StarTeam connection information.(设置StarTeam连接参数)

      首先在Windows平台上完全安装StarTeam SDK的运行时套件(把运行时dll安装在Windows系统目录下)。 通常这是StarTeam客户端安装程序的一部分。 许可信息请参考http://www.borland.com. 下面是该连接的一些属性:

      Project location(项目位置)

      StarTeam项目的位置,格式<servername>:<portnum>/<projectname>, 其中<servername>是StarTeam服务器名字,<portnum>是服务器使用的端口号,默认值49201。 <projectname>是运行在StarTeam服务器上的StarTeam的项目名。

      User(用户)

      登录StarTeam服务器的用户名。

      Password(口令)

      登录StarTeam服务器的口令。

      Convert EOL?

      该属性可选的值如下:

      all: 所有ASCII码文件将其行结束符调整为和检出的客户机的行结束符一致。

      no: 检出的文件的行结束符以服务器为准。

      该属性为可选属性。如果没有指定,默认值为yes

      Quiet period(等待周期)

      在Luntbuild准备从VCS检出代码前,需要确保最近一次检入操作距离现在的最短时间(单位为秒),在这段时间不能有新的检入操作。 这样是为了避免有其他用户正在做检入的过程中Luntbuild做检出的操作,从而导致捡出代码的不一致性。 该属性为可选属性,如果为空,Luntbuild就会立刻检出代码,并执行构建,而不会检测当前VCS中是否有正在进行的检入操作。

      7.10. Using multiple Version Control Adaptors.(同时使用多个VCS连接)

      对于一个项目可以定义多个VCS连接。 当该项目的构建开始运行的时候,所有有关的VCS代码库的相关代码检出到项目的工作目录。 例如,某个项目,客户端模块是在Cvs代码库里面,服务器端的模块是在VSS代码库里面。 这种多连接的情况还适合于那种使用同一种VCS,当时不同的模块存放在不同的代码库里面的情况。 例如,某个项目,客户端模块在某一个Cvs代码库中,而服务器端模块在另一个Cvs代码库中。

      第 8 章 新建VCS模块

      点击某个VCS定义页面里面的New Module(新建模块)图标。 如果定义了多个VCS模块,那么Luntbuild会按序依次检出这些模块。 如果后面模块目标路径和前一个模块有部分重叠,那么这部分重叠的路径将会被后一个模块覆盖。 例如:假设您定义了一个模块,其目标路径为"/foo/bar", 然后又定义了第二个模块,其目标路径为"/foo", 那么从第二个模块检出的内容将完全覆盖第一个模块。 反过来,如果第一个模块的目标路径为"/foo", 第二个模块的目标路径为"/foo/bar",那么第一个模块检出的"/foo/bar"下的内容会被第二个模块覆盖, 而在检出代码中的其他路径比如/foo/another_bar,将不会被覆盖。

      8.1. 设置AccuRev模块信息

      Label(标签)

      标签在AccuRev里面是用于同步的事务编号。在此指定您希望基于哪个事务编号进行构建。

      Depot(存储位置)

      用于检出代码 Accurev储存位置。

      Backing stream(回溯流)

      构建模块的回溯流的名字。 The backing stream should be able to have streams created from it by the build user.

      Build stream(构建流)

      指定同回溯流关联的构建流名称 (如果该构建流 存在,它将被自动创建)。 基于这个流,一个相关的引用树将会被创建(树的名称为流的名称加上"_reference"后缀)。

      8.2. 设置cvs模块信息

      Source path(源路径)

      指定从CVS代码库中获取代码的路径,例如:testcvs/src

      Branch(分支)

      指定前面的源路径的分支。该选项是可选的。如果没有设置相应的值,那么将把主分支作为默认值。

      Label(标签)

      指定前面的源路径的标签。该选项也是可选的。 如果指定了该值,那么该值将优先于分支的值。如果没有设置相应的值,就会检出上述指定分支里面的最新代码。

      "Source path"(源路径)代表了CVS代码库中模块的意思,例如"/testcvs", "/testcvs/web",或者"testcvs"。 但是不能用"/"或者"\"这两个字符来定义源路径。 "Branch"(分支)就是CVS分支(branch),而"Label"(标签)就是CVS的标签(tag)。 对于某个模块,这二个属性(branch和label)中只有一个的值有效。 如果都不为空,那么标签将优于分支。 如果都为空,Luntbuild则从主分支获取最新的代码。

      8.3. 设置Perforce模块信息。

      Depot path(存储位置路径)

      指定Perforce存储位置的路径,例如"//depot/testperforce/...".

      Label(标签)

      指定前面的存储位置路径上的标签。该属性是可选的。 如果为空,那么将会检出该存储路径上最新的版本。

      Client path(客户端路径)

      指定客户端的路径,例如"//myclient/testperforce/...".

      注意

      某些文件和目录要排除在外,那么对于需要排除在外的每一个文件和目录都需要创建一个独立的模块,而且 在Depot路径的属性前需要加上减号((-))作为前缀:
              Depot path:  -//depot.side
              Client path: //client.side
              

      Perforce的模块定义把代码库的Depot路径("Depot path")映射到客户端路径("Client path")。 Luntbuild也支持Perfoce的标签属性。 Depot路径("Depot path")表示Perforce代码库中的路径,例如 "//depot/testperforce/..." 客户端路径("Client path")表示客户端的路径(也就是Depot路径下的内容检出之后保存在客户端的什么目录下), 例如"//myclient/testperforce/..." "Label"是Perfoce标签,如果您想获取指定的Depot路径下的内容的某个时刻的快照,那么就需要使用标签。 如果标签为空,那么获得的Depot路径下的内容为head版本。 客户端路径对应的目录不一定要存在。 如果不存在那么Luntbuild会自动创建相应的目录。 在Perfoce的连接信息中指定的用户应该有足够的权限来创建或者修改Perforce的参数。

      8.4. 设置Subversion模块信息

      Source path(源路径)

      即Subversion代码库中的路径,例如"testsvn", "testsvn/web", 或者 "/testsvn"。 当"branch"(分支) 或者 "label"(标签)属性指定的时候,本路径会映射到svn代码库的另一个路径。

      Branch(分支)

      指定以上源路径的分支。该属性为可选项,如果不设置,那么将使用默认值trunk。

      注意

      在subverion里面没有分支的概念。在此指定的值会被Luntbuild映射到相应的源路径,效果就像cvs的分支一样。

      Label(标签)

      指定以上源路径的标签。该属性为可选的。如果设置了该属性,其优先级高于分支。如果不设置,就采用指定分支的head version。

      注意

      同样,subversion也没有标签的概念。在此指定的值会被Luntbuild映射到相应的源路径,效果就像cvs的标签一样。

      Destination path(目标路径)

      该属性为可选的。目标路径相对于项目的工作目录,如果设置了相应的值,那么从subversion代码库中获取的代码将保存在该目录下。 否则将会在项目的工作目录下创建一个以源路径命名的目录,从subversion获取的代码将保存在该目录下。

      "Source path"(源路径)即Subversion代码库中的路径,例如"testsvn", "testsvn/web", 或者 "/testsvn"。 Luntbuild在其他的属性值基础上将该路径映射到Svn代码库中的路径。 我们定义了以下属性来描述这种映射方式:

      Repository url base: svn://localhost
      Directory for trunk: trunk
      Directory for branches: branches
      Directory for tags: tags

      可以试验一下下面的模块设置和路径映射:

      Source path: testsvn/web, branch: <empty>, label: <empty>, destination path: <empty>

      Luntbuild从ulr"svn://localhost/trunk/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

      Source path: testsvn/web, branch: simplified-chinese, label: <empty>, destination path: <empty>

      Luntbuild从ulr "svn://localhost/branches/simplified-chinese/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

      Source path: testsvn/web, branch: <empty>, label: v1_0, destination path: <empty>

      Luntbuild从ulr "svn://localhost/tags/v1_0/testsvn/web"下检出代码, 并保存在"<project work directory>/testsvn/web"下面。

      Source path: testsvn/web, branch: simplified-chinese, label: v1_0, destination path: testsvn/web/simplified-chinese

      Luntbuild从ulr "svn://localhost/tags/v1_0/testsvn/web" 下检出代码, 并保存在"<project work directory>/testsvn/web/simplified-chinese"下面。

      注意

      这里定义的分支无效,因为同时定义了分支和标签,那么标签优先。

      当Luntbuild给检出到目录"<project work directory>/testsvn/web"下的代码打上标签,例如是"v1_0", 会执行下面的代码:"svn copy <project work directory>/testsvn/web svn://localhost/tags/v1_0/testsvn/web"

      如果将"Directory for trunk","Branch"和"Label"三个属性都设置为空值,就可以避免上面的url映射。 通过这种方式,只设置"Source path" 和 "Destination path"属性,您就可以控制从什么地方检出代码,并将检出的代码保存在什么地方。 这种情况下,源路径只会把"repository url base"属性的值作为前缀。

      8.5. 设置VSS模块信息

      Source path(源路径)

      在此指定在VSS代码库中的路径,例如"testvss", 或者"/testvss".

      注意

      不用在路径前添加$符号,如果指的是整个代码库,只需要输入"/"就可以了。

      Label(标签)

      在此指定上面设置的源路径上的标签,该属性为可选的,如果为空,就使用最新的版本。

      Destination path(目标路径)

      指定相对于项目工作目录的目标目录,从源目录下获取的代码就保存在这个目录下。 该属性为可选的,如果该属性为空,Luntbuild会在项目工作目录下建一个和源目录的目录结构一致的目录, 并将检出的代码保存在这个目录下。

      源路径其实就是相对于VSS代码库根目录的的项目路径,例如"testvss", "/testvss", 或者 "/testvss/web"等等。 使用"/" 或者 "\",都可以获取整个代码库的内容。 标签指VSS标签。VSS通过创建一个新的共享的项目来实现分支功能。 因此您需要配置不同的模块,这样才能从不同的分支获取代码。 如果某个模块的标签为空,Luntbuild则从VSS获取该模块的最新代码。 如果定义目标路径属性,那么从VSS获取的代码将会保存在相对于项目工作目录的目标目录下。 否则会保存在相对于项目工作目录并且和源目录的目录结构一样的目录下。

      8.6. 设置StarTeam模块信息

      StarTeam view(StarTeam视图)

      在此指定StarTeam视图。该属性为可选属性。如果为空,Luntbuild使用当前的StarTeam项目的根view。

      Source path(源路径)

      在此指定相对于StarTeam视图的路径。"/"代表根路径。

      Label(标签)

      指定以上StarTeam视图的标签。该属性为可选属性。如果为空,就以指定视图上的最新代码为准。

      Destination path(目标路径)

      指定相对于项目工作目录的目标目录,从源目录下获取的代码就保存在这个目录下。 该属性为可选的,如果该属性为空,Luntbuild会在项目工作目录下建一个和源目录的目录结构一致的目录, 并将检出的代码保存在这个目录下。

      "StarTeam view"指StarTeam的视图,"Label"指StarTeam视图的标签。 如果"StarTeam view"为空,Luntbuild就使用StarTeam的根视图。 "Source path"是相对指定的StarTeam视图根目录的路径。 如果定义了"Destination path"性,那么从StarTeam代码库获取的代码将会保存在相对于项目工作目录的目标目录下。 否则会保存在相对于项目工作目录并且和源目录的目录结构一样的目录下。

      第 9 章 创建项目的Builder

      Builder根据项目特定的构建计划执行相应的创建活动。

      新建Builder的步骤:首先点击"Builders",然后点击该页右上角的"New"图标 然后就会进入Builders编辑页面。

      Builders编辑页

      首先选择适当的Builder类型。 目前可以选择的Builder包括:

      Ant Builder
      Command Builder
      Maven Builder

      对于指定的项目,根据不同任务的需要,可以创建所需的builders,创建的数目没有限制,这个根据需求而定。 然后针对项目的每个构建计划,从这里定义的一套builder里面挑选出相应的builder或者post-builder。

      9.1. 配置Ant Builder

      Name(名称)

      提供一个用于标识该builder的名称,该名称以后可以修改。

      Command to run Ant(运行Ant的命令)

      指定运行Ant的命令(通常是ant.bat或者ant的shell文件及其所在的目录) 例如:/path/to/ant 包含在${...}里面的字符串被当作是OGNL表达式,而且在构建前被替换成实际值。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

      注意

      包含空格的单个参数应该用引号括起来,这样才不会被解释为多个参数。

      注意

      对于Ant命令行选项,下面的选项不需要指定 "-buildfile" 和 "-logfile", 因为这两个选项由Luntbuild内部提供。其他选项允许使用。

      您可以修改Ant命令以添加命令行选项和属性,例如-Ddebug=_debug.

      Build script path(构建脚本所在路径)

      Ant的构建脚本文件(buildfile)所在的路径,如果该目录非绝对路径,Luntbuild认为该目录是相对项目工作目录的。

      Build targets(构建目标)

      指定需要构建的目标,使用空格来分隔不同的目标(包括空格符的目标名需要用引号括起来,这样是为了避免被当成是多个目标来处理)。 如果没有指定目标,那么将使用ant构建文件的默认目标。 同样地,您可以使用OGNL表达式(${...})来传递变量,该变量作为构建的目标名。 例如,您可以使用${build.schedule.name}变量,该变量的作用是可以根据不同的构建计划使用不同的构建目标。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

      Build properties(构建属性)

      在此定义需要传递给ant构建脚本的属性,例如:

      buildVersion=${build.version}
      scheduleName=${build.schedule.name}

      每一行只能设置一个变量。这里支持使用OGNL表达式格式,即${...}。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

      环境变量

      设置运行builder的环境变量,例如:

      MYAPP_HOME=${build.schedule.workingDir}
      SCHEDULE_NAME=${build.schedule.name}

      每一行只能设置一个变量。可以在变量里插入OGNL表达式(即${...})。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

      Build success condition(成功构建条件式)

      构建成功条件式是一个用来判断当前项目是否成功构建的OGNL表达式 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。 如果不设置该属性,那么会使用默认值————result==0 and logContainsLine("BUILD SUCCESSFUL")。 当这个表达式的值为true的时候,就认为本次构建是成功的。 下面的一些例子演示了OGNL表达式的格式。

      result==0, 此处的"result"表示ant构建结果的返回值。
      logContainsLine("^ERROR.*"), 如果构建的日志里面的某一行匹配正则表达式"^ERROR.*",那么就认为该表达式为true。 关于正则表达式的格式请参考 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
      以上的表达式可以使用'!'符号,该符号的作用是用来求相反的值。 例如,!logContainsLine("^ERROR.*"),如果构建日志里没有包括匹配指定模式的行,那么该表达式的值为true。
      以上的表达式可以通过"and"和"or"逻辑运算符组合成新的表达式。 例如,表达式result==0 and !logContainsLine("^ERROR.*"),如果ANT执行构建的结果为0,且构建的日志不 包括以"ERROR"字符串打头的行,那么该表达式的值为true。

      9.2. 配置命令行Builder

      Name(名称)

      builder的标识名,设置后可以修改。

      Build command(构建命令)

      在此指定构建命令。例如:/path/to/command.bat "${build.version}" "${build.artifactsDir}"。 ${...}所包括的部分被当作是OGNL表达式来处理,在构建前会被实际值代替。 每个OGNL表达式都需要有一个对应的JAVA根对