每日集成之每日编译

来源:互联网 发布:飞叶子在淘宝叫什么 编辑:程序博客网 时间:2024/05/17 02:46
  • 每日集成的意义
每日集成对团队开发来说很重要,它能尽早的发现前一天提交中可能存在的问题,并为团队今天的开发工作提供一个统一的一致的基础版本。
  • 每日集成要做些什么
团队中每个成员都必须保证自己提交的代码是能够编译通过的,这仅仅是最低要求。更高一点的要求是,每个成员都需要保证提交的代码是可用的。再高一点的要求是,每个成员都要保证提交的代码是高质量的。
基于以上的考虑,每日集成要做的事情有:每日编译、自动化测试、静态检查。
下面只分享一下我做每日编译的一些经验。测试我不感兴趣,没研究过。静态检查都是用一些现成的工具,如pclint、coverity等等,没啥好说的。
  • 每日编译

这是每日集成必不可少的环节。

我所做的项目是android中间件,做每日编译最简单的实现方式就是crontab+shell脚本,这也是我最喜欢的方式,可以有很大的发挥空间。但是老大们喜欢用持续集成工具,因为持续集成工具是可视化操作、能生成图表、自动抓log,这对他们来说更为直观。我反感用工具的原因是:一,有学习成本;二,工具对我而言就是一个黑盒,出问题的时候难定位。

我的每日编译脚本结构:

1、config.sh          //路径参数,包含两个函数分别用到export,unset命令

                               //其余每个shell都在开头和结尾处source这个脚本

config.sh结构

#!/bin/bash

function set_value()

{

    export A=a

}

function unset_value()

{

    unset A

}

if [ "$1" == "-u" ];then

   unset_value

else

   set_value

fi


2、prepare.sh 
        //删除昨日编译痕迹,新建今日编译目录
 prepare.sh结构

#!/bin/bash

source config.sh

#define function

function remove_dir()

{

# do sth

}

function make_dir()

{

# do sth

}

#processe flow

remove_dir

make_dir

source config.sh -u其余几个脚本结构也是这样子的哦~

3、download.sh        //下载源码

4、compare.sh         //记录今日快照,与昨日快照对比(我们用git的)

5、compile.sh         //编译(可设置4中对比后有代码更新才编译)

6、publish.sh         //编译结果发布到指定路径