PIE每日构建简介
    来源:北京航天宏图  时间:2017/09/08

    1背景

        在以往的软件研发过程中,存在一个比较严重的问题:测试版本发布周期长,严重时长达两个月无法发布测试版本。为了有效解决这个问题,在开发PIE 的过程中采用了现代软件工程的每日构建。每日构建(daily builds)是指每天自动地在指定时间完整地构建整个软件代码。之所以采用每日构建,最初的目的是尽量将源码编译过程和初步的代码质量检查都交给机器完成,从而达到减少人力,提高效率的目的。


    2流程简介

        在软件开发流程中引入每日构建,具体来说包括如下几步:每日构建工具选择、工具安装和每日构建流程的设计和执行。

        要执行每日构建,需要选择合适的工具。在工具的选择上,我们主要基于两点考虑:一是尽量降低成本;二是能够获得足够的技术支持。因此,在选择每日构建工具时,我们主要考虑开源的、在业界广泛使用的并能和现有的开发环境配合使用的工具,为此我们选择了业界著名的开源每日构建工具hudson。

        然后就是部署每日构建工具hudson。一般来说,要执行每日构建需要专门的每日构建服务器。最开始由于缺乏专门的每日构建服务器,我们把hudson部署在源码服务器上。

        接着的关键一步是设计每日构建流程。常见的简单的每日构建流程主要是在指定的时间获取服务器的代码,编译代码和将编译好的二进制文件拷贝到指定发布目录。但在每日构建的实践过程中,我们发现需要针对这一流程进行完善。完善后的每日构建流程如下图所示。

    图 1 PIE每日构建流程图


        PIE的每日构建流程的执行时间设定在每天凌晨12:30开始执行。一般来说,如果源码编译顺利,测试人员在第二天上班后就可在版本发布目录中拿到软件的最新测试版本并开始测试。


    3总结

        从2013年开始执行每日构建,PIE 的每日构建流程已经持续执行了将近四年。总结这四年的执行情况,PIE 每日构建基本上达到了预期目标,大大提高了测试版本的发布频率,以前两个月无法发布一个测试版本的情况一去不复返。通过每日构建,也暴露出了两个突出问题:一是一些同事因为粗心忘记提交一些代码而导致每日构建失败;二是即使每日构建成功,有时发布的软件版本也不能完全满足测试的要求,比如有时发布的软件无法运行导致软件无法测试。暴露出来的问题也促使我们反思软件开发过程中存在的问题。


    4后续改进设想

        针对每日构建中出现的问题,我们认为每日构建不仅可以是一个软件编译流程,而且也可以是一个软件质量检查工具,因此PIE每日构建流程还有比较大的完善空间。在每日构建流程的后续完善中,可以考虑在流程前面增加代码静态质量检查,在流程后面增加编译后的软件质量检查。具体的完善流程如下图所示。

    图 2 PIE每日构建完善流程图


        上述流程涵括了软件质量的两方面检查:一是代码质量检查;二是功能质量检查。功能质量检查的目的主要是:一、保证软件是无毒的;二、保证软件的基本可测性,即发布的软件测试版本不是那种无法运行的或者一点就崩溃的软件版本。