团队介绍 |
|
我们是光大科技智能云计算部智能化平台团队Devops项目组,专注于金融传统行业研发效能的提升和快速交付。通过自动化技术的应用,以及敏捷协同管理工具链的研发,助力金融传统行业Devops落地。团队拥有Devops领域经验丰富的研发工程师和专家,将不定期分享敏捷领域的原创文章,共同探索Devops落地最佳实践。
不要在重复性的工作上浪费时间,否则你不是一个合格的程(lan)序(ren)员。 –鲁迅
图片来源于网络
什么是持续集成
In software engineering, continuous integration (CI) is the practice of merging all developers\’ working copies to a shared mainline several times a day.
维基百科
从维基百科的定义中我们知道,持续集成就是每天多次的将开发人员的代码合并到主线中。每次集成都通过自动化的构建工具(包括编译、扫描、测试、部署)验证集成结果。并根据构建结果,确定代码是否能够正确的集成在一起。
传统开发模式存在的问题
图片来源于网络
存在的问题:
1、Bug总是在最后才出现。
2、越到项目后期需要集成的模块越多,冲突和问题就越多,解决排查问题花费的时间也越多。
3、软件交付时机无法保障。
4、程序经常需要变更。
某些项目中,程序会经常需要变更,特别是敏捷开发实践者。
5、无效的等待变多。
开发人员在等待集成其他人的模块,测试人员在等待开发人员修复Bug,产品经理在等待新版本上线给客户做演示,项目经理在等待其他人提交代码。
6、用户的满足度低。
持续集成是怎么做的
图片来源于网络
在持续集成中,团队成员频繁集成他们的工作成果,每人每天至少集成一次,也可以多次。每次集成都会经过自动化构建工具(编译、测试、扫描、部署等)的检验,如果这些任务失败,自动化构建工具就会快速的将其反馈给开发人员,也即快速失败(fast fail)原则。Martin Fowler发现这种方法大大地减少了集成问题并且能够快速地开发出高内聚性的软件。
持续集成的好处:
1、解放了重复性劳动。
自动化构建工具可以解放集成、测试、部署等重复性劳动,而且机器集成的频率明显比手工高很多。
2、更快地修复问题。
持续集成更早的获取变更,更早的进入测试,更早的发现问题,解决问题的成本显著下降。
3、更快的交付成果。
持续集成更早发现错误,减少解决错误所需的工作量。集成服务器在构建环节发现错误可以及时通知开发人员修复,集成服务器在部署环节发现错误可以回退到上一版本,服务器始终有一个可用的版本。
4、减少手工的错误。
在重复性动作上,人容易犯错,而机器犯错的几率几乎为零。
5、减少了等待时间。
持续集成缩短了从开发、集成、测试、部署各个环节的时间,也就缩短了中间出现的等待时机。持续集成,意味着开发、集成、测试、部署也得以持续。
6、更高的产品质量。
集成服务器往往提供代码质量检测等功能,对不规范或有错误的代码会进行标注。
如何进行持续集成实践
1、只维护一个源码仓库
2、自动化build
任何人都应该能从一个干净的计算机上检出源代码,然后敲入一条命令,就可以得到能在这台机器上运行的系统。
3、让你的build自行测试
测试并非完美解决方案,但它确实能抓住很多 bug——多到可以让软件真正可用。
4、每人每天都要向 mainline (主分支)提交代码
一个基本的原则是每个开发者每天都必须提交代码。实践中,如果开发者提交的更为频繁效果也会更好。你提交的越多,你需要查找冲突错误的地方就越少,改起来也越快。
5、保持快速 build
对大多数项目来说,极限编程的10分钟 build 的指导方针非常合理。
6、在模拟生产环境中进行测试
如果不在生产环境做测试,所有环境差异都是风险,可能最终造成测试环境中运行正常的软件在生产环境中无法正常运行。
7、让每个人都能轻易获得最新的可执行文件
8、每个人都能看到进度
9、自动化部署
总结
持续集成不能防止 bug 的产生,但它能明显让寻找和修改 bug 的工作变简单。bug也会积累,bug之间也有联系,在延迟集成的模式下,越到后期bug积累的越多,修复bug的成本也就越高;同时面对大量的bug,开发人员寻找和解决 bug 的动力也会减弱。持续集成巧妙的解决了这个问题,长时间的集成不再存在,快速失败的机制让bug难以累积。
参考文献
《持续集成》,Martin Fowler,https://www.martinfowler.com/(点击下方
原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32904.html