自动化:持续集成、交付、部署
持续集成
持续集成(Continuous integration),指的是**频繁地将代码集成到主干**。
持续集成主要目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
优点
提高开发效率
持续集成可以把工程师从繁琐的任务中解放出来,提高工作效率。并且能有效减少发布版本中的错误和 Bug 数量。防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
快速发现并定位 BUG
通过各种例行测试,您的团队可以在问题变严重前就发现并定位到程序的 Bug。减少由程序错误带来的损失。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
更快速的发布更新
持续集成可以帮助您的团队更快速、更积极的发布程序更新程序。在发布时可自动完成大量重复工作完成,节省人力。
Martin Fowler 说过,”持续集成并不能消除 Bug,而是让它们非常容易发现和改正“。
持续交付
持续交付(Continuous delivery),指的是频繁地将软件地新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「Staging 环境」,比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续部署到生产环境中。
持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
目的
代码在任何时刻都是可部署的,可以进入生产阶段。
与持续交付的区别
持续部署的前提是能自动化完成测试、构建、部署等步骤。它与持续交付的区别,可以参考下图。
通过上图,我们可以看到,持续交付是手动部署到生产环境的,而持续部署是自动部署到生产环境。