求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
   
分享到
充分利用 Rational Build Forge 的三种方式
 

发布于2013-7-24

 

关于本文

IBM? Rational? Build Forge? 是 IBM 构建和发布管理的旗舰产品。它不仅提供了构建进程自动化的惊人潜力,还为团队实现了测试程序的自动化。

对于大多数开发员来说,Build Forge 的使用仅仅被限制为使用管理操控台,或者图形用户界面(GUI)。许多团队都没有意识到 Build Forge 可以通过客户端连接,并且与基于 IBM? Rational? Jazz? 技术的软件相集成。当团队需要使用 Build Forge 创建,或者将通用构建与测试方案集成起来时,程序编程界面(API),也就是 Build Forge 客户端,将会发挥自己的作用。客户端向您提供了一种简单但有效的方法,去添加,编辑,以及按照与管理操控台相同的方式与 Build Forge 对象相集成。
本文详细描述了团队是怎样使用客户端以及 Jazz 插件,来充分开发利用 Rational Build Forge 潜力的。

Rational Build Forge 概述

Rational Build Forge 支持高性能构建以及敏捷软件开发。它的适应性能够帮助开发团队标准化一些重复性的任务,管理一致性的规范,以及共享信息。它自动化并促进了软件收集和交付的过程,并且规范了构建管理。

Build Forge 集成到当前的环境之中,并支持主要的开发语言,脚本,工具以及平台。您可以继续使用已存在的投资,同时为进程自动化,加速,注释以及日程安排添加了有价值的功能。

在真实世界的场景中,每个团队都有其自己的进程,该进程通常是手动且必须的工具,例如漏洞追踪以及源代码管理,很少集成起来。对于更稳定和高质量产品的需求越来越大,它需要集成,重复性,以及高度的可靠性。

出于这个目的考虑,团队通常拥有一些定制的脚本,但是事情要比仅仅一个脚本复杂得多,因为通常情况下您需要多个版本,多个平台,以及多个编辑的支持。这就是 Rational Build Forge 自动化软件收集过程的地方,以实现更快的软件开发和交付循环,更高的产品质量,更高的员工效率,以及更短的投入市场时间。

Rational Build Forge 可以帮助您的团队更快和更轻松地达到以下的目标:

1、再使用已存在的脚本和基础以支持自动化

2、自动化,优化,以及标准化复杂的软件交付生命周期

3、集成不同的工具以管理各种项目配置

4、提供构建加速,服务器管理,自动化注释,日程安排,安全性,以及更多

5、使用 Eclipse IDE 插件以进行更好地管理

6、有了 Microsoft Windows 及 UNIX 操作系统的一般性安装经验,可以简化和建设管理

7、将企业环境之中的软件收集过程实现自动化和规范化

8、继续保持有力语言和多平台支持的传统

Rational Build Forge 结构

Build Forge 结构是以一种这样的方式构建的,您可以在管理操控台,或者 Build Forge 客户端上使用几乎所有功能。如图 1 所示,结构提供了一个简单的 访问,实施 (服务器),以及 运行 (代理)机理。

图 1. IBM Rational Build Forge 结构

如图 1 所示,Build Forge 由一个网络界面构件(Apache 网络服务器和 PHP),一个服务器层构件,以及一个引擎构件组成。网络界面,引擎构件,以及 API 程序客户端就是服务器层构件的客户端。

访问

您可以使用安装期间提供的管理操控台或者 Build Forge 客户端来与 Build Forge 相交流。这有助于管理用户和资源,并创建和安排测试项目,生成和分析报告。管理操控台是一种在 Apache http 服务器上运行的基于 http 的网络程序,但是客户端可以从 Java 和 Perl 处获得。

实施(服务器)

结构的核心是 Build Forge 服务器,它由网络界面构件(Apache 网络服务器以及 PHP),一个服务层构件,以及一个引擎构件组成。服务器可以安装到 Microsoft Windows,Linux,IBM? AIX? 之类的平台之上,而且它可以与多个数据库一起运行,例如 IBM? DB2?,MySQL 以及 Oracle。服务器层促进了与客户端类管理操控台的联系。这有助于实现与已存在 IDEs 及源代码管理(SCM)工具的完美集成。

运行(代理)

Build Forge 在 Build Forge 代理 的帮助下在末端服务器上执行命令。一个代理从 Build Forge 引擎那里获得指令,对测试中的系统运行指定的命令,并将结果返回至引擎。代理可以在一些环境下运行,例如 Windows,Linux,AIX,Solaris,HP-UX,IBM? System z? 系列,IBM? System i?,Macs 等等。

Build Forge 客户端简介

Rational Build Forge 是结构的工作流程引擎。它是您可以直接使用的产品,以指定包含指定步骤的项目。步骤可以是一个或者多个在测试基础中选择服务器上执行的命令。但是目前,所有这些操作主要都是从 Build Forge 管理操控台上开始的,它将与集成式开发环境(IDE),软件配置管理(SCM),等等的集成的概率降至最低。

但是,您可以使用 Build Forge 客户端来解决这个问题,它可以帮助您提供与其他工具的完美集成。客户端还提供了一个简单有效的方法,去访问任意 Build Forge 对象,并使用操控台执行几乎所有操作。

Build Forge 7.0.1 版本引入了一个在 Apache Tomcat 服务器容器中运行的服务器层。Build Forge API 可以作为 Java 客户端和 Perl 客户端获得,它们都构建在服务器层之上。在 7.0.1 版本之前,只有 API 可以获得(不是 Perl 客户端)。

从 Build Forge 客户端开始

1、从以下位置处下载客户端文件:

http://server_name:server_port/clients/。

2、如有需要,将 Java 或者 Perl 客户端下载到 Services Layer 部分。

1)为了使用 Java 客户端,您可以下载客户端文件,获得 rbf-services-client.jar 文件,并将其放到 Java 项目的适当构建位置。

注意: 您需要 JDK 1.5 或者更高的版本来使用 Build Forge Java 客户端。

2)为了使用 Perl 客户端,您可以获得 .zip 文件,切换至 rbf-services 目录,并运行如代码清单 1 所示的命令(您需要 Perl 5.8 或者更高的版本来使用它):

3、Build Forge 客户端直接与服务层相交流。在安装期间,Apache Tomcat 服务器被配置成监听特定的端口。因此,这些端口必须为客户端开放,以和 Build Forge 相交流。默认条件下,端口会被设置成以下内容:

3966 (non-secure)
49150 (secure, SSL-enabled)

清单 1. 安装 Perl 客户端

perl Makefile.PL
make
make install

提示:

有了客户端,您还可以下载客户端引用文件。

在其余的部分中,我们使用 Java 客户端提供范例,但是您还可以为相同的目的而使用 Perl 客户端。

为了从 Build Forge 客户端开始,首先您需要与 Build Forge Services Layer 联系起来。

4、在如代码清单 2 所示的代码范例之中,只提供 Build Forge 服务器名和端口号(在默认的端口号下,这是可选的)。

清单 2. 连接至 Build Forge

import java.io.IOException;

import com.buildforge.services.client.api.APIClientConnection;
import com.buildforge.services.common.ServiceException;

public class ConnectToBuildForge {
public static void main(String[] args) {
try{
APIClientConnection conn = new
APIClientConnection(<server_name>,<port_number>);
// In case of default port, do not specify any port number

String login_token = conn.authUser(<username>,<password>);
// Return value is a login token returned by the services layer

}catch (ServiceException e) {
System.out.println("Service Exception:" + e.getMessage());
}catch (IOException e) {
System.out.println("IOException Exception:" + e.getMessage());
}
}
}

5、接下来,提供一个用户名和密码以进行认证。

6、在认证之后,很重要的一点是您要保存 APIClientConnection 对象,以便后续的操作。确定认证的用户拥有适当的权限去处理 Build Forge 对象。为了提供或者确认权限,您可以切换至 User > Access Groups。

注意: 客户端对象和管理操控台对象使用相同的对话;因此,相同的用户不能以两种方式并发认证。

工作范例

在接下来的代码列表之中,我们将会向您演示一些常用的操作,例如 创建,更改,列表,以及 删除。

注意: 我们使用 Build Forge 7.1.1.4 Java 客户端来进行演示

清单 3. 创建一个用户

import java.io.IOException;

import com.buildforge.services.client.api.APIClientConnection;
import com.buildforge.services.client.dbo.User;
import com.buildforge.services.common.ServiceException;

public
class CreateUser {

/**
* Creates a new user
* @param args
*/
public
static
void main(String[] args) {

try{
APIClientConnection conn = new
APIClientConnection(<server_name>,<port_number>);
// In case of default port, do not specify any port number
conn.authUser(<username>,<password>);

User user = new User(conn);
user.setLogin(<login_name>);
user.setPassword(<password>);
user.setEmail(<email>);
user.setName(<name>);
user = user.create();
user.addAccessGroup(<access_group>);

}catch (ServiceException e) {
System.out.println("Service Exception:" + e.getMessage());
}catch (IOException e) {
System.out.println("IOException Exception:" + e.getMessage());
}
}
}

清单 4. 更新一个测试计划


import com.buildforge.services.client.api.APIClientConnection;
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
import com.buildforge.services.client.dbo.Project;

public
class UpdateTestProject {

/**
* Creates a new test project
* @param args
*/
public
static
void main(String[] args) {
try{
APIClientConnection conn = new
APIClientConnection(<server_name>,<port_number>);
// In case of default port, do not specify any port number
conn.authUser(<username>,<password>);

Project project = new Project(conn);
project.setName(<project_name>);
project.setSelectorUuid(<selector_uuid>);
project.setBuildClassUuid(<buildclass_uuid>);
project.setActive(true);
project.setLevel(<level>);
project = project.update();

}catch (ServiceException e) {
System.out.println("Service Exception:" + e.getMessage());
}catch (IOException e) {
System.out.println("IOException Exception:" + e.getMessage());
}
}
}

清单 5. 列表环境值

import java.util.List;

import com.buildforge.services.client.api.APIClientConnection;
import com.buildforge.services.client.dbo.Environment;
import com.buildforge.services.client.dbo.EnvironmentEntry;

public class ListEnvironmentEntries {

/**
* Returns the list of all Environments Entries in an Environment
* @param args
*/
public static void main(String[] args) {
try{
APIClientConnection conn = new
APIClientConnection(<server_name>,<port_number>);
// In case of default port, do not specify any port number
conn.authUser(<username>,<password>);
Environment env = Environment.findByUuid(conn, <env_uuid>);
// Find environment

if(env!=null){ // Find environment entries only if environment exists
List<EnvironmentEntry> ls = env.getEntries(); // Get environment entries
for(EnvironmentEntry env_entry : ls){
System.out.println("Environment Entry Uuid:" + env_entry.getUuid());
System.out.println("Environment Uuid:" + env_entry.getEnvironmentUuid());
System.out.println("Environment Entry Parameter Name:" +
env_entry.getParameterName());
System.out.println("Environment Entry Parameter Value:" +
env_entry.getParameterValue());
}
}
}catch (ServiceException e) {
System.out.println("Service Exception:" + e.getMessage());
}catch (IOException e) {
System.out.println("IOException Exception:" + e.getMessage());
}
}
}

清单 6. 激活项目并搜索结果

import java.util.List;

import com.buildforge.services.client.api.APIClientConnection;
import com.buildforge.services.client.dbo.Build;
import com.buildforge.services.client.dbo.Project;
import com.buildforge.services.client.dbo.Result;

public
class FireProjectAndFindResults {

/**
* Fire project and find corresponding results
* @param args
*/
public
static
void main(String[] args) {
try{
APIClientConnection conn = new
APIClientConnection(<server_name>,<port_number>);
// In case of default port, do not specify any port number
conn.authUser(<username>,<password>);

Project project = Project.findByUuid(conn,<project_uuid>);

if(project!=null){ // Fire project if only it exists
Build build = project.fire();
// Sleep for some seconds
List<Result> ls = build.getResults();
Result result = null;

for(Result result : ls){
System.out.println("Build Uuid:" + result.getBuildUuid());
System.out.println("Result Step Description" + result.getDescription());
System.out.println("Result Step Duration" + result.getDuration());
System.out.println("Result" + result.getResult().name());
}
}

}catch (ServiceException e) {
System.out.println("Service Exception:" + e.getMessage());
}catch (IOException e) {
System.out.println("IOException Exception:" + e.getMessage());
}
}
}

这些范例使用 Java 客户端来显示对 Build Forge 对象的一些操作。您可以看到它可以帮助您研究更多此类的操作,并使用它们达到最大的潜力。查看 Java 和 Perl 客户端所提供的帮助。

与 Jazz 产品相联系以得到完整系列的工具

在前面的章节中,您要同时使用 Java 和 Perl 客户端以与 Build Forge 相联系。但是 Rational Build Forge 还提供了与一些有用的软件基于 Jazz 基础的紧密集成,例如 IBM Rational Quality Manager 和 IBM Rational Team Concert。

1)Rational Quality Manager 是测试活动的中心。它可以帮助您规划测试,管理需求,开发测试用例和测试套装,维护测试执行记录,管理实验资源,以及提交和追踪缺陷。

2)Rational Team Concert 可以帮助您管理源代码,以及追踪缺陷,工作项,以及迭代计划。这可以帮助测试员,开发员,结构师和管理员一起更加有效地协同工作。

因此,Rational Quality Manager 与 IBM Rational Team Concert 和 Rational Build Forge 的集成可以帮助团队为变更和发布管理提供完整系列的工具。

注意: 我们要使用 Build Forge 7.1.1.4 来完成集成操作。

与 Rational Quality Manager 相集成

在 Build Forge i安装文件中编辑 buildforge.conf 文件(您可以在 Windows 系统中的 ../buildforge/apache/tomcat/webapps/rbf-services/WEB-INF/classes/buildforge.conf 位置处找到它),并添加以下的一行:

db_system_password password

其中密码指的是用于集成 Build Forge 和 Rational Quality Manager(RQM)的密码。

如果 Build Forge 与 Rational Quality Manager 安装在相同的服务器上,那么您可以打开 server.xml 文件(…/apache/tomcat/conf/server.xml),并将本行中的端口号从 8005 更改为 8007:

<server port="8005" shutdown="SHUTDOWN">

在 Rational Quality Manager 之中打开 integration_config.xml,并在代码的起始处和末端删除 <!-- 以及 --> 标记。然后在 <hostname></hostname> 标记内提供 Build Forge 服务器名,以及 <password></password> 标签内 buildforge.conf 文件所提到过的密码。

给 <instanceID></instanceID> 标签内的 Bulid Forge 服务器起一个有意义的名字。

代码清单 7 显示了一个范例。

清单 7:integration_config.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<RTLMExtensionAPIRegistration>
<adapter>
<name>Build Forge RQM Integration </name>
<version>1.0</version>
<APIVersionSupported>1.0</APIVersionSupported>
<inventoryExtensionId>com.ibm.rational.test.lm.spi.bf.v71.inventory
</inventoryExtensionId>
<automationExtensionId>com.ibm.rational.test.lm.spi.bf.v71.automation
</automationExtensionId>
<pluginId>com.ibm.rational.test.lm.spi.bf.v71</pluginId>
<instance>
<instanceId>some meaningful name</instanceId>
<hostname>Build Forge server name</hostname>
<port>Build Forge server port</port>
<offline>FALSE</offline>
<credential>
<username>Build Forge server username</username>
<password>Integration password</password>
</credential>
</instance>
</adapter>
</RTLMExtensionAPIRegistration>

注意: 如果 Rational Quality Manager 安装在 IBM? WebSphere? Application Sever 上,那么在 Application servers > server1 > Process Definition > Java Virtual machine > Custom Properties 处的 Java 系统属性中提供路径 integration_config.xml,并添加一个名为 com.ibm.rational.test.lm.spi.xml.location 的通用属性。

与 Rational Team Concert 相集成

Rational Team Concert(RTC)集成可以帮助您将 Build Forge 自动化与 Team Concert 之中的追踪性与协作集成起来。当构建在 Build Forge 中激活时,RTC-Build Forge 插件会得到不断地更新,其结果也是实时的状态。 在构建的结尾,步骤结果与日志 以及 BOM 数据 将会在 Rational Team Concert Build Result 之中。

如果您想完成集成步骤,那么您可以查看 Resources 部分中的第一个链接。

相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理
 
分享到
 
 
   


软件配置管理的问题、目的
软件配置管理规范
CQWeb 7.1性能测试与调优指南
为什么需要使用ClearCase
ClearCase与RTC的集成
利用ClearQuest 进行测试管理
更多...   


产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员


配置管理实践(从组织级到项目级)
通号院 配置管理规范与应用
配置管理日构建及持续集成
丹佛斯 ClearCase与配置管理
中国移动 软件配置管理
中国银行 软件配置管理
天津华翼蓝天科技 配置管理与Pvcs