对持续集成的浅思

来源:互联网 发布:网络平台服务合同 编辑:程序博客网 时间:2024/06/04 17:41
这是工作中结合前辈和自己的思考总结的关于CI的想法:
持续集成的英文是Continuous Integration(CI),网络上可以搜出一大片定义,哪一个比较正确呢,真不好说,我目前无权回答这个问题,但是心中总要有个概念,引用一段对话来说明:某日,某某A说:总算我的持续集成做完了!B就说了:你敢说你做完了?A说:能自动编译、自动打包、上传到测试的服务器,还不算做完吗?随后A被B教育了一番,那么能自动编译,打包,发布就是持续集成吗?当然是的,但是这只是最基本的。我愿意这样来定义它:持续集成首先是一种实践,然后它是一种思想,一种思考方式和行为习惯!,包括一些具体行为,开发check in后触发编译、测试、部署、反馈等。当然具体的可以参看:Martin Fowler的Continuous Integration。针对不同角色,持续集成的实践是不一样的针对开发人员习惯:频繁提交、正确提交、及时修复坚持:数据库集成、单元测试、集成测试审查:使IDE 能做代码静态分析架构:功能开关(推荐关注)有时候在一个新功能由于不够完善,已经提交到主干上了。为了保证产品及时发布,又要保障不影响用户使用。提供一个功能开关,关闭时,客户就不会看到最新版的功能菜单。QA(测试)人员保障或建立测试安全网;督促开发写单元测试、集成测试;编写验收测试脚本;集成、发布人员实现一键化构建;部署应该有连续性;分阶段构建;环境配置管理;自动生成ReleaseNote;SCM 人员集中放置软件资产(资产是指脚本、代码、文件与软件开发有关的);创建一致的目录结构;建立合理标签规范:命名、标签创建时机;建立可追溯机制(编译日志存档、编译重现、包可追溯、回滚);环境管理搭建部署流水线;注意包管理有规可循。推荐工具:yum、deb、nexus、自建包管理平台;执行效率I/O 瓶颈,可以采用部分SSD 硬盘方式;针对不同语言优化硬件:C 语言:cpu java 语言:内存;带宽因素;测试分级、分组; 代码更新优化:ssh 方式替换svn 或者http 方式。
原创粉丝点击