bizi 2008-2-19 17:08
保持敏捷-持续集成
[font=宋体][size=3]敏捷的一个要点就是:快速反馈。[/size][/font]
[font=宋体][size=3]从最早的每日构建,到现在的持续集成,都是开发者为了迅速获得系统反馈而采取的一系列措施。而且反馈信息越来越快速,信息要求越来越高。[/size][/font]
[size=3][font=宋体]一次集成的过程步骤大概如下:自动更新[/font][font=Times New Roman]->[/font][font=宋体]编译构建[/font][font=Times New Roman]->[/font][font=宋体]自动测试[/font][font=Times New Roman]->[/font][font=宋体]报告集成结果。需要用户写好各过程命令(比如更新版本),并在集成服务器的支持下,把各过程自动串连起来。[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=宋体]目前可用的集成服务器有很多种,[/font][font=Times New Roman] [url=http://www.we-done.com/site/prolist.php?id=58]DSTP[/url][/font][font=宋体]也对持续集成提供了支持。[/font][/size]
[size=3][font=Times New Roman]DSTP[/font][font=宋体]为支持持续集成提供的功能如下。[/font][/size]
[size=3][font=Times New Roman]1[/font][font=宋体].通过图形界面设置集成命令,并能把命令按顺序发到指定机器进行执行。完成版本更新,编译构建,测试等实际过程。[/font][/size]
[size=3][font=Times New Roman]2[/font][font=宋体].允许设置在集成结束[/font][font=Times New Roman]/[/font][font=宋体]失败[/font][font=Times New Roman]/[/font][font=宋体]成功[/font][font=Times New Roman]/[/font][font=宋体]部分失败中某种情况发生时,自动向指定人员发送集成报告。在集成报告中,失败的环节,自动以显眼的红色给予提示;自动显示错误信息,甚至包括哪行代码出错。[/font][/size]
[size=3][font=Times New Roman]3[/font][font=宋体].可以设置集成周期,如每日[/font][font=Times New Roman]/[/font][font=宋体]周[/font][font=Times New Roman]/[/font][font=宋体]月[/font][font=Times New Roman]/[/font][font=宋体],或者每隔固定分钟后自动启动集成。[/font][/size]
[size=3][font=Times New Roman]4[/font][font=宋体].和[/font][font=Times New Roman]SVN[/font][font=宋体]集成,可以自动感知[/font][font=Times New Roman]SVN[/font][font=宋体]库的变化。可以设置[/font][font=Times New Roman]SVN[/font][font=宋体]每次修改后,自动启动集成。在集成失败,自动向代码提交人和指定的项目人员发送报告,催促迅速更正,保证代码随时可用。[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=Times New Roman][b][/font][font=宋体]设置集成命令:[/font][font=Times New Roman][/b][/font][/size]
[size=3][font=Times New Roman]DSTP[/font][font=宋体]通过图形界面进行命令设置,设置过程简单,通过鼠标右键,就可以增[/font][font=Times New Roman]/[/font][font=宋体]删[/font][font=Times New Roman]/[/font][font=宋体]改命令[/font][font=Times New Roman]([/font][font=宋体]活动[/font][font=Times New Roman])[/font][font=宋体],并设置命令的先后关系。如下图,表示设置了几个过程,更新版本后继续编译版本,编完版本后运行自动测试。[/font][/size]
[size=3][font=Times New Roman]
[attach]6705[/attach] [/font][/size]
[font=宋体][size=3]我们看下编译版本这个命令如何设置的。双击编译版本节点,弹出对话框如下图[/size][/font]
[size=3][font=Times New Roman]
[attach]6706[/attach][/font][/size]
[size=3][font=宋体]设置命令时,允许设置命令执行机器[/font][font=Times New Roman]([/font][font=宋体]需要集成机器有安装客户端[/font][font=Times New Roman])[/font][font=宋体]和预先设置环境变量。[/font][font=Times New Roman]DSTP[/font][font=宋体]会自动下发该命令到指定机器进行执行。并得到执行结果。[/font][/size]
[size=3][font=宋体]同时各命令的执行有先后顺序,比如版本编译没成功,就进行版本加载测试是无效的,[/font][font=Times New Roman]DSTP[/font][font=宋体]能判断各机器返回的执行结果是否成功或者失败,并根据设置决定集成是否继续下一集成步骤。[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=Times New Roman][b][/font][font=宋体]集成报告:[/font][font=Times New Roman][/b][/font][/size]
[size=3][font=宋体]当集成各步骤完成,集成结束,[/font][font=Times New Roman]DSTP[/font][font=宋体]能根据预先要求向指定的项目人员发送集成报告。[/font][/size]
[size=3][font=Times New Roman]
[attach]6707[/attach] [/font][/size]
[font=宋体][size=3]可以根据集成的结果选择是否通知,可以设置通知接收人。[/size][/font]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=Times New Roman]DSTP[/font][font=宋体]向通知接收人发送的集成报告格式如下[/font][/size]
[size=3][font=Times New Roman]
[attach]6708[/attach][/font][/size]
[size=3][font=宋体]在报告中,列出了本次集成各命令的运行时间,以及运行结果[/font][font=Times New Roman]. [/font][font=宋体]对于失败的命令,会以红色显目提醒。[/font][/size]
[font=宋体][size=3]点错误信息查看,系统会自动显示本次集成的错误信息。[/size][/font]
[size=3][font=Times New Roman]
[attach]6709[/attach] [/font][/size]
[size=3][font=宋体]从错误信息可以看出,在[/font][font=Times New Roman]test.c[/font][font=宋体]的第四行出现了错误[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[size=3][font=Times New Roman][b][/font][font=宋体]集成周期:[/font][font=Times New Roman][/b][/font][/size]
[size=3][font=Times New Roman]DSTP[/font][font=宋体]的集成服务器可以设置集成周期,按规定时间自动启动集成。同时,[/font][font=Times New Roman]DSTP[/font][font=宋体]和[/font][font=Times New Roman]SVN[/font][font=宋体]紧密集成,可以自动感知[/font][font=Times New Roman]SVN[/font][font=宋体]的变动。可以设置[/font][font=Times New Roman]SVN[/font][font=宋体]每次修改后,自动启动集成。在集成失败,自动向代码提交人和指定的项目人员发送报告,催促迅速更正,保证代码随时可用。[/font][/size]
[font=Times New Roman][size=3][/size][/font]
[font=宋体][size=3]关于持续集成,已经有很多论述。但真的实施起来的公司并不多。很多公司可能就只做到了每日构建,自动测试做的并不多。这是因为自动测试环境通常涉及到多台机器的配合,没有一个好的集成服务器并不好施行;更重要的是,自动测试需要根据项目实际,进行适当的测试构造,而这方面的技术难度和工作量都不小。[/size][/font]
[font=宋体][size=3]当敏捷流行起来,测试驱动开发也在深入人心,测试的价值也越来越为人所认识。当大家慢慢意识到在测试,在集成投入精力是有价值时,持续集成也就开始流行,从而推动开发变得更加敏捷~~[/size][/font]
[font=宋体][size=3][/size][/font]
DSTP的相关功能,可以到[url=http://www.we-done.com/][url=http://forum.csdn.net/PointForum/Manage/www.we-done.com][color=#0000ff]www.we-done.com[/color][/url][/url]下载了解。
对本文有疑问或者对持续集成和软件开发过程研究有兴趣的,欢迎来信一起探讨。我的邮件:bizi AT we-done.com。