王朝网络
分享
 
 
 

Build Monitor Automation(软件构建自动监控,提供一种Build监控的实现方式) - 孙振芳

王朝other·作者佚名  2006-06-12
宽屏版  字体: |||超大  

在我们进行项目的构建过程中,如果项目的构建时间较长,通常的情况是我们只能等到构建结束后才能知道构建是否成功,也就是我们的进一步的工作都要等到构建结束后才能继续,如果项目构建需要1个小时,我们就需要等待1个小时,如果需要n个小时.... 通常项目的构建过程中会将build log输出到一个log文件中,通常这个文件是编译器直接写入的,也就是说这个文件中的信息是较为实时的,当然我们可以不断地人为的去查看log文件中的信息,检查是否出错。较好一点的情况是我们把这个log文件发布与Intranet上,这样大家都可以看到build的情况,但这毕竟还是有些不方便,我个人觉得理想的情况应该是这样:

1. 能够自动识别错误

2. 当出现Build Error时,第一时间自动通知相关人员,通知的方式可以是Email,消息通知,SMS等

3. 系统中可能存在一些可以忽略的Error信息,对于这些信息的出现,作为非错误处理

4. 普通的build log中信息较为繁杂,难以找到错误信息,应对build log进行一定的整理,以更友好的方式展现出来。

我们采用如下方式来实现上述想法

1. 当Build启动时,伴随着一个Build Monitor也将启动,

2. 每隔一段时间(时间间隔可以人为设定),自动检测错误一次

3. 采用Perl脚本通过正则表达来实现错误的检测,采用Commandline来实现间隔检测

4. 系统能够定义一些可忽略的错误,即这些错误可不视为错误处理

5. 根据build log中的格式,当出现错误的时候,提炼出最有意义的信息,存成将之存成文件,并停止监控,是否停止构建,视项目情况而定

6. 将提炼出来的信息发送给相关人员

附:错误检测脚本Perl

#Written by Sun Zhenfang 20060515

sub CompareErrFiles($$)

{

my @Standard=`type $_[0]`;

my @General=`type $_[1]`;

my $GeneralError;

my $StandardError;

if(scalar(@Standard)<scalar(@General))

{

return 0;

}

else

{

for($i=0;$i<@General;$i++)

{

$iGeneral = rindex($General[$i],"\\");

$iStandard = rindex($Standard[$i],"\\");

if($iGeneral eq '-1' and $iStandard eq '-1')

{

if($General[$i]=~/.*\s([1-9]+[0-9]*)\serror.*([1-9]+[0-9]*)\swarning.*/i)

{

$GeneralError=$1;

if($Standard[$i]=~/.*\s([1-9]+[0-9]*)\serror.*([1-9]+[0-9]*)\swarning.*/i)

{

$StandardError=$1;

if($GeneralError!=$StandardError)

{

return 0;

}

}

else

{

return 0;

}

}

else

{

if(substr($General[$i],5) ne substr($Standard[$i],5))

{

return 0;

}

}

}

elsif($iGeneral*$iStandard>0)#They are same to include {

if(substr($General[$i],$iGeneral) ne substr($Standard[$i],$iStandard))

{

return 0;

}

}

else#One include \,and other does not include {

return 0;

}

}

}

return 1;

}

$LogFile=$ARGV[0]; #Build log file

$ErrFle=$ARGV[1]; #Output error file

$StandardErrorFile=$ARGV[2]; #Standard error file

system('del '.$ErrFle.' /F');

@lines=`type $LogFile`;

my $i;

my $j;

my $k;

my $ErrCnt;

for($i=0;$i<@lines;$i++)

{

if($lines[$i]=~/.*\s([1-9]+[0-9]*)\serror.*/i)

{

$ErrCnt=$1;

$j=0;

$k=0;

while($j<=$ErrCnt)

{

chop($lines[$i-$k]);

if($lines[$i-$k]=~/.*error.*/i)

{

push(@errs,$lines[$i-$k]);

$j++;

}

$k++;

}

}

}

@errs = reverse @errs;

open(OUTFILE, ">".$ErrFle);

print OUTFILE join("\n",@errs);

close OUTFILE;

if(CompareErrFiles($StandardErrorFile,$ErrFle))

{

system('del '.$ErrFle.' /F');

}

附:定时检测,该段脚本调用Perl脚本探测错误, 并通过BLAT工具发送Email通知

REM Written by Sun Zhenfang 20060516

REM Baseline Name - %1

REM Baseline Source Path - %2

CD C:

CD C:\BuildMonitorDEL %1.email /F

DEL %1.err /F

:WAIT

@SLEEP 120

IF NOT EXIST %2bld.log GOTO WAIT

IF EXIST %2errs.txt GOTO STOP

@PERL DetectError.pl %2bld.log %1.err %1.stderr

IF EXIST %1.err GOTO ERR

GOTO WAIT

:ERR

@DEL %1.email /F

@COPY header.txt+%1.err+footer.txt %1.email

@BLAT %1.email -tf C:\Bld_Start\bldmonitor.lst -subject "%COMPUTERNAME% BUILD MONITOR - %1 Error Information"

:STOP

EXIT

文笔仓促为谦,日后补充

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有