充分利用Rational Build Forge的三种方法

关于本文

IBM®Rational®BuildForge®是IBM用于构建和发布管理的旗舰产品。 它不仅为自动化构建过程提供了惊人的潜力,而且还为任何团队自动化了测试过程。

对于大多数开发人员而言,Build Forge的使用仅限于使用管理控制台或图形用户界面(GUI)。 许多团队都不知道Build Forge也可以通过客户端连接,并且也可以与基于IBM®Rational®Jazz™技术的软件集成。 当团队需要使用Build Forge创建或集成其自定义的构建和测试解决方案时,由Build Forge提供的称为Build Forge 客户端的应用程序编程接口(API)扮演着重要的角色。 客户端为您提供了一种简单而健壮的方法,以与管理控制台相同的方式添加,更新,修改Build Forge对象并与之交互。

本文详细介绍了团队如何使用客户端和Jazz插件来更好地利用Rational Build Forge的潜力。

Rational Build Forge概述

Rational Build Forge支持高性能构建和敏捷软件开发。 它的适应性有助于开发团队标准化重复性任务,管理合规性任务并共享信息。 它可以自动化并加速软件组装和交付过程,并简化了构建管理。

Build Forge集成到您当前的环境中,并支持主要的开发语言,脚本,工具和平台。 您可以继续使用现有投资,同时为流程自动化,加速,通知和计划添加有价值的功能。

在实际情况下,每个团队都有自己的流程,这些流程通常是手动的,而很少集成诸如错误跟踪和源代码管理之类的基本工具。 但是,对于更稳定,更高质量的产品的需求日益增长,这需要集成度,可重复性和高可靠性。

为此,团队通常具有自定义脚本,但是事情要比脚本复杂得多,因为您经常需要支持多个版本,多个平台和多个版本。 在这里,Rational Build Forge将软件组装过程的自动化提高到新的水平,从而加快了软件开发和交付周期,提高了产品质量,提高了员工生产率并缩短了上市时间。

Rational Build Forge可以帮助您的团队更快,更轻松地实现以下目标:

  • 重用现有脚本和基础架构以支持自动化
  • 自动化,优化和标准化复杂的软件交付生命周期
  • 集成各种工具来管理各种项目配置
  • 提供构建加速,服务器管理,自动通知,调度,强大的安全性等等
  • 使用Eclipse IDE插件进行更好的管理
  • 通过针对Microsoft Windows和UNIX操作系统的通用安装经验,简化并减少管理
  • 在企业环境中自动化和简化软件组装流程
  • 延续强大语言和多平台支持的传统

Rational Build Forge架构

Build Forge体系结构的设计方式使您可以使用管理控制台上的几乎所有功能,也可以通过Build Forge客户端使用。 如图1所示,该体系结构提供了一种简单的访问 , 实现 (服务器)和运行 (代理)机制。

图1. IBM Rational Build Forge体系结构
工作流程图:访问,实施,执行

如图1所示,Build Forge由Web界面组件(Apache Web服务器和PHP),服务层组件和引擎组件组成。 Web界面,引擎组件和API程序客户端是服务层组件的客户端。

访问

您可以使用安装期间提供的管理控制台或Build Forge客户端与Build Forge服务器进行通信。 这有助于管理用户和资源,建立和安排测试项目以及生成和分析报告。 管理控制台是在Apache http服务器上运行的基于http的Web应用程序,但是该客户端可在Java和Perl中使用。

实施(服务器)

该体系结构的核心是Build Forge服务器,它由Web界面组件(Apache Web服务器和PHP),服务层组件和引擎组件组成。 该服务器可以安装在Microsoft Windows,Linux,IBM®AIX®等平台上,并且可以与许多数据库(例如IBM®DB2®,MySQL和Oracle)一起运行。 服务层有助于与管理控制台以及客户端的连接。 这可以帮助与现有IDE和源代码管理(SCM)工具无缝集成。

运行(代理)

Build Forge借助Build Forge 代理在终端服务器上执行命令。 代理从Build Forge引擎获取订单,在被测系统上运行指定的命令,然后将结果返回给引擎。 代理可以在多种环境中运行,例如Windows,Linux,AIX,Solaris,HP-UX,IBM®Systemz®系列,IBM®Systemi®和Mac。

介绍Build Forge客户端

Rational Build Forge是架构中的工作流引擎。 这是一个简单的产品,可用于指定包含要执行的步骤的项目。 这些步骤可以是一个或多个将在测试基础结构中的选定服务器上执行的命令。 但是目前,所有这些操作主要是从Build Forge管理控制台启动的,该控制台将与集成开发环境(IDE),软件配置管理(SCM)工具等集成的可能性降至最低。

但是,您可以使用Build Forge客户端解决此问题,该客户端可以帮助提供与其他工具的无缝集成。 客户端还提供了一种简单而健壮的方法来访问任何Build Forge对象,并执行了通常使用控制台执行的几乎所有操作。

Build Forge版本7.0.1引入了一个服务层,该服务层在Apache Tomcat Servlet容器中运行。 Build Forge API可作为Java客户端和Perl客户端使用,它们建立在服务层之上。 在7.0.1版本之前,只有Perl API可用(而Perl客户端则没有)。

Build Forge客户端入门

  1. 从以下位置下载客户端文件:
    http:// server_name : server_port / clients /。
  2. 根据需要在“服务层”部分下下载Java或Perl客户端。
    • 要使用Java客户端,请下载客户端文件,解压缩rbf-services-client.jar文件,并将其放在Java项目的适当构建路径中。

      注意:
      要使用Build Forge Java客户端,需要JDK 1.5或更高版本。
    • 要使用Perl客户端,请解压缩.zip文件,转到rbf-services目录,然后运行代码清单1中所示的命令(您需要Perl 5.8或更高版本才能使用它):
  3. Build Forge客户端直接与服务层通信。 在安装期间,将Apache Tomcat服务器配置为侦听特定端口。 因此,必须打开这些端口,客户端才能与Build Forge通信。 默认情况下,端口设置为以下端口:

    3966(非安全)
    49150(安全,已启用SSL)
清单1.安装Perl客户端
perl Makefile.PL
make
make install

提示:

  • 除了客户端,您还可以下载客户端参考文件。
  • 在其余各节中,我们将提供使用Java客户端的示例,但您也可以出于相同目的使用Perl客户端。

要开始使用Build Forge客户端,您需要首先连接Build Forge服务层。

  1. 在清单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());
    }
  }
}
  1. 接下来,提供用户名和密码进行身份验证。
  2. 身份验证之后,保存APIClientConnection对象以备将来使用很重要。 确保通过身份验证的用户具有使用Build Forge对象的适当特权。 要提供或检查特权,请转到用户>访问组

注意:
客户端对象和管理控制台对象使用相同的会话。 因此,同一用户不能同时通过两种方式进行身份验证。

工作实例

在下面的代码清单中,我们将说明一些常用的操作,例如create , update , list和delete 。

注意:
我们将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;

publicclass CreateUser {

/**
* Creates a new user
* @param args
*/
  publicstaticvoid 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;
import com.buildforge.services.client.dbo.Project;

publicclass UpdateTestProject {

/**
* Creates a new test project
* @param args
*/
  publicstaticvoid 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;

publicclass FireProjectAndFindResults {

/**
* Fire project and find corresponding results
* @param args
*/
  publicstaticvoid 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)提供了非常强大的集成。

  • Rational Quality Manager是测试活动的中心。 它可以帮助您计划测试,管理需求,开发测试用例和测试套件,维护测试执行记录,管理实验室资源以及提交和跟踪缺陷。
  • Rational Team Concert可以帮助您管理源代码,以及跟踪缺陷,工作项和迭代计划。 这有助于测试人员,开发人员,架构师和管理人员更有效地合作。

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

注意:
我们正在使用Build Forge 7.1.1.4来实现集成。

与Rational Quality Manager集成

  1. 在Build Forge安装中编辑buildforge.conf文件(在Windows安装中可以在../buildforge/apache/tomcat/webapps/rbf-services/WEB-INF/classes/buildforge.conf中找到)并添加以下行:

    db_system_password password

    其中“密码”是用于集成Build Forge和Rational Quality Manager(RQM)的密码。
  2. 如果Build Forge和Rational Quality Manager安装在同一服务器上,则打开server.xml文件(…/ apache / tomcat / conf / server.xml),并在此行中将端口号从8005更改为8007
    <server port="8005" shutdown="SHUTDOWN">
  3. 在Rational Quality Manager中打开integration_config.xml ,并删除代码开头和结尾的<!-和->标记。 然后在<hostname></hostname>标记内提供Build Forge服务器名称,并在<password> </ password>标记内提供您在buildforge.conf文件中提到的密码。
  4. <instanceID></instanceID>标签内为Build 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 Server上,请在“ 应用程序服务器”>“ server1”>“流程定义”>“ Java虚拟机”>“定制属性”的Java系统属性中提供路径integration_config.xml ,并添加名为com.ibm.rational.test.lm.spi.xml.location的定制属性。 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中。

有关完整的集成步骤,请参见参考资料部分中的第一个链接。


翻译自: https://www.ibm.com/developerworks/rational/library/advantage-rational-build-forge/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值