程序开发中的持续集成、持续交付、持续部署
看了《敏捷开发修炼之道》的持续集成,看的我有点迷糊。我想以我自己的理解,来解释什么是持续集成、持续交付、持续部署。有问题的地方希望大家给予指出。
持续集成就是要求我们频繁提交新的代码,保证新代码与原来代码能够正常的使用。以 Git 进行代码管理为例,持续集成就是要求我们把新完成的代码提交到 Git 的一个分支上,并要求通过测试,保证代码能正常运行。在多人协作开发的时候,一天多同步几次,能减少代码冲突。持续集成的目的,是让产品可以快速迭代,同时保证代码质量。
持续交付指的是,在持续集成的基础上,将集成后的代码部署到测试环境(主分支),测试人员测试通过后,就可以手动部署到生产环境中。
持续部署是持续交付的下一步,指的是把测试通过的代码,通过自动化工具部署到生产环境(无需人工操作)。而对用户来说,当所有功能通过云环境的自动部署后,其 APP 或网站等软件能获取到更新状态,并自行提示用户更新。
我公司的开发流程大体一致,其过程有以下几步。
1、本地编码,要提交时,先从 Git 上拉取代码到本地,有冲突解决冲突。
2、运行合并后代码。并进行简单的测试。如:单元测试,功能测试。保证功能正常运行。
3、直到一个模块或一个功能开发完成后,团队内整合构建一个整理的测试版本。交付到测试部门。
4、测试部门进行测试。输出测试报告。开发根据测试问题清单修复问题 - 再继续测试 - 直到达到上线标准。测试达标后会构建上线版本。
5、准备上线资料,运维通过工具部署新版本。注意备份原版本。
6、如果线上版本出现问题,回滚到上一个版本。修复后再上线。
7、每个上线版本代码都要打 tag,方便以后有需求要在此版本上做修改。
开发流程达成共识后,版本更新就会很顺畅。而自动化部署搭建好后,基本不用担心上线环节会出问题(没有变动的情况下)。
版权声明: 本文为 InfoQ 作者【石云升】的原创文章。
原文链接:【http://xie.infoq.cn/article/b840409595073b82098fae8e0】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论