DevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协做与整合。以期打破传统开发和运营之间的壁垒和鸿沟。DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合做的文化、运动或惯例。经过自动化“软件交付”和“架构变动”的流程,来使得构建、测试、发布软件可以更加地快捷、频繁和可靠。具体来讲,就是在软件交付和部署过程当中提升沟通与协做的效率,旨在更快、更可靠的的发布更高质量的产品。html
也就是说DevOps是一组过程和方法的统称,并不指代某一特定的软件工具或软件工具组合。各类工具软件或软件组合能够实现DevOps的概念方法。其本质是一整套的方法论,而不是指某种或某些工具集合,与软件开发中设计到的OOP、AOP、IOC(或DI)等相似,是一种理论或过程或方法的抽象或代称。linux
CI的英文名称是Continuous Integration,中文翻译为:持续集成。CI中,开发人员将会频繁地向主干提交代码,这些新提交的代码在最终合并到主干前,须要通过编译和自动化测试流进行验证。架构
持续集成(CI)是在源代码变动后自动检测、拉取、构建和(在大多数状况下)进行单元测试的过程。持续集成的目标是快速确保开发人员新提交的变动是好的,而且适合在代码库中进一步使用。CI的流程执行和理论实践让咱们能够肯定新代码和原有代码可否正确地集成在一块儿。app
CD可对应多个英文名称,持续交付Continuous Delivery和持续部署Continuous Deployment,一下分别介绍。运维
查了一些资料,关于持续交互和持续部署的概念比较混乱,如下的概念总结按大部分的资料总结而来。工具
完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。在持续交付中,每一个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队能够快速、轻松地将应用部署到生产环境中或发布给最终使用的用户。单元测试
对于一个成熟的CI/CD管道(Pipeline)来讲,最后的阶段是持续部署。做为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署能够自动将应用发布到生产环境。持续部署意味着全部的变动都会被自动部署到生产环境中。持续交付意味着全部的变动均可以被部署到生产环境中,可是出于业务考虑,能够选择不部署。若是要实施持续部署,必须先实施持续交付。测试
持续交付并非指软件每个改动都要尽快部署到产品环境中,它指的是任何的代码修改均可以在任什么时候候实施部署。spa
持续交付表示的是一种能力,而持续部署表示的则一种方式。持续部署是持续交付的最高阶段。翻译
另一个概念,也就是所谓的敏捷开发,彷佛尚未所谓的简称,并且这个称呼彷佛在国内被滥用了。敏捷开发着重于一种开发的思路,拥抱变化和快速迭代。如何实现敏捷开发,目前彷佛尚没有完善的工具链,更多的是一种概念性,调侃的说法“既想马儿跑得快,又想马儿不吃草”的另一种说法。
上图揭示了敏捷开发的一些内涵和目标,彷佛有点儿一本真经的胡说八道的意思。
概念性的内容,每一个人的理解都有所不一样。就比如CGI 这个词,便可以理解成CGI这种协议,也能够理解成实现了CGI协议的软件工具,都没有问题,咬文嚼字过犹不及。留下一图:
连接:https://blog.jjonline.cn/linu...