定义:一天中多次的将所有工作者的工作合并到一个共享的主线的协作方式,具体来说是开发人员提交新代码后立即进行构建,测试。根据测试结果我们可以确定新代码和原代码是否能正确的集成到一起
CI / CD的意义和价值
- 敏捷开发思想的体现。
- 频繁、自动化、可重复。流程像管道,代码像水。
- 快速发现问题,快速解决(从软件质量的角度讲,快是为了让有问题的代码快速的被发现,尽早解决,在CD的阶段发现问题比在正式环境发现问题好,在CI阶段发现问题比在CD阶段发现问题好)。
- 不能保证Bug Free,所以提高发布频率,降低单次发布风险。
- 快速交付用户价值,拥抱市场变化。
CI - 持续集成:高频的将个人开发的代码集成到主线中
关键点
1、高频 :高频能保证不会有巨大的变化而引发不可控制的问题发生
2、自动化 :自动化可以保证高频
3、主线 :不一定是master,只要是团队成员共享的工作分支就行
CD - 持续交付(Continuous Delivery)和 持续部署 (continuous Deployment)
持续交付
软件工程中的一种方法,团队在很短的迭代内交付代码,确保可以随时的可靠的发布新版本,发布的时候可以进行手动的发布。
在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。
它的优点是不用在每个大版本开发完成后上线,而是在每个小功能或模块开发完成后就可以上线。