WEB开发网
开发学院软件开发Java 基于 CruiseControl 和 Rational 统一变更管理实现... 阅读

基于 CruiseControl 和 Rational 统一变更管理实现的软件开发中的自动化持续构建

 2009-12-18 00:00:00 来源:WEB开发网   
核心提示: 通过 CruiseControl 和 UCM 集成的功能进行进一步优化ClearCase 和 ClearQuest 本身都提供对 Perl 脚本语言的支持,CruiseControl 是基于 Ant 实现的,基于 CruiseControl 和 Rational 统一变更管理实现的软件开发中的自

通过 CruiseControl 和 UCM 集成的功能进行进一步优化

ClearCase 和 ClearQuest 本身都提供对 Perl 脚本语言的支持,CruiseControl 是基于 Ant 实现的,通过 Ant 也很容易可以执行构建服务器上和随 ClearCase 安装的 ccperl 编译器,通过调用 Perl 脚本,可以在 CruiseControl 中完成任何对 UCM 系统的操作。下面举两个具体的例子。

在单元构建产生构建目标加速构建

前面的章节提到在单元构建中采用了增量编译和自动测试。为近一步缩短时间加速构建完成,我们可以根据构建中修改的代码所属的模块进行部分模块编译,然后选择相关测试用例进行测试。

为达到这一目的,首先构建脚本和自动测试脚本需要支持模块化编译和测试,这里我们对脚本编写不作具体的讨论。我们需要解决的是如何在 CruiseControl 中得到本次构建中哪些代码被修改,从而产生构建目标。

首先在 cc-build-unit.xml 更新构建区域源代码(清单 2)后,启动构建之前,插入下面的代码调用 Perl 脚本生成构建目标。


清单 15. 生成构建目标
 <exec executable="ccperl.exe" failonerror="false"> 
<arg line="getBuildTargetFromCC.pl ${cc.stream} ${cc.viewroot} ${ucmlastbuild}"/> 
 </exec> 

这里 ucmlastbuild 变量是 CruiseControl 提供的,代表前一次成功构建的发生时间,格式是 dd-MMMM-yyyy.HH:mm:ss。根据这个时间,我们可以在脚本 getBuildTargetFromCC.pl 中利用 ClearCase lshistory 命令得到本次构建中哪些文件被修改,产生构建目标。


清单 16. 产生本次构建所有修改文件列表
 my $full_list = `cleartool lshist -branch $cc.stream -r -nco -fmt 
   "%o~#~%n\\n" -since $ucmlastbuild $cc.viewroot/test.CompVOB`; 
 
my @lines = split(/\n/, $full_list); 
foreach my $line (@lines) 
{ 
my ($type, $version) = split(/~#~/, $line); 

// Not consider operation like mkbranch, rmbranch or rmver 
if ($type ne "mkbranch" && $type ne "rmbranch" && $type ne "rmver") 
 { 
push @change_list, $version; 
} 
 } 
 ... 

上一页  5 6 7 8 9 10 

Tags:基于 CruiseControl Rational

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接