小蜜锋 - 云代码空间
—— 技术宅拯救世界!
为了遵守D(ont)R(epeat)Y(ourself)原则,更是为了节省人工,我们最近把整个团队开发测试流程基本自动化了。
大体实现的功能包括:
1 自动给加入的新同事分配测试环境:个人测试域名,Git repos,个人测试数据库。Git操作在phing里边有对应的Task,apache配置可以用phing copy模板的时候自动展开里边的变量,我们把数据库信息也set env写进去了,代码里边配置文件就不用老改mysql 账号。
2 实现了数据库的版本管理,这点很多团队没注意,其实蛮有用的。没用db_deploy,用了MMP。https://github.com/idler/MMP 这个东西各种NB。别的工具都要你手工写UP DOWN的SQL,它可以自动连接数据库并生成各个时刻数据表结构之间的Diff SQL,并允许你在任何时间回到某个时刻的表结构。我们把生成的Diff Sql也放到代码目录下,纳入Git管理,于是就可以恢复到任何版本代码所对应的数据表结构。唯一的问题就是你会忘了去创建数据库镜像,所以我写了个Git的post receive hook,每次提交完代码,Git会检查数据库是否有变动,有的话会就自动生成Diff SQL,并提示你放到代码里边去。
3 通过Git hook实现了对多个环境的快速发布。其实很简单,检查了Git的comment,发现里边有@send2server.gitbrance 字样的,就把Git里边对应的代码提取出来发布到对应的web目录去。Phing里边有scp、ftp的Task,发布到本机目录和其他服务器很简单;也有SVN Task,所以发布到SAE和BAE也很容易。
4 发布流程整合了PHPUnit。如果代码对应的测试跑不过,是不能发布到SAE上去的。这个…… Phing也有Task ^^。以后考虑再加覆盖率指标。其实我开始把PHP CodeSniffer 也加进去了,结果惨不忍睹 T_T,然后先下了。
5 把facebook的Phabricator用上了,不过现在只用来做代码review,可以对单行和多行代码直接评论,支持邮件通知,讨论代码细节一目了然。
6 有了云平台,很多事情更简单了,但环境多样性也上来了。胶水程序要做好,才能让工程师专注于业务本身。
先分享这些吧,具体的实现细节等我回头有时间再写,好久没用PHP了,发现出来了很多新东西,还有老东西进步也不小 :)