DevOps、持续集成、持续交付、持续部署、敏捷等术语都必须熟悉。也就是说,在快速交付价值、工程、管理、组织和工具上提高效率,建立稳定快速的产品(项目)交付流程。这本书以项目管理、部署自动化、发布自动化、测试自动化、容器云为中心,实现了持续集成、持续交付和持续部署。因为这不是理论书。不会谈论道理。我会直接谈论持续整合、持续提供、持续部署的价值,提出问题,说出思考、方案,谈谈实际操作。希望帮助广大读者在企业地板上快速整合、持续提供和持续分发。
1.1 CICD的价值
持续集成(CI)是软件开发实践。在持续集成中,团队成员经常集成工作结果。一般来说,每人每天可以整合一次或多次。每个集成都是自动构建的,包括静态扫描、安全扫描、自动测试等过程,以便尽快发现集成错误。许多团队发现,这种方法可以大大减少整合带来的问题,并加快开发团队合作软件的速度,这在Martin Fowler对持续整合的定义中引用。
“持续交付”是指经常将新版本的软件提供给质量团队或用户进行审阅,如果审阅通过,代码将进入生产阶段。
持续部署是持续交付的下一步,是指在审查后将代码自动分发到生产环境中。
通过以上定义,我们不难发现,持续突出的就是一个快速的字。商业软件的快速落地需求促进了软件工程的发展。持续快速迭代的软件过程是当今主流开发规约。特别是在互联网行业,快速应对是生命线。从一个想法到产品落地,在全部突击的过程中,机会暂时过去。对用户反馈的反应也非常敏捷。早晨反馈当天在网上公布,快得用户重视。“快”已经成为商业竞争力。所有这些都需要快速反应能力,这就是促进持续整合、持续提供和持续部署的动力。
产品或项目的参与者需要深刻理解这样一个事实:团队合作的时候,工作转移(系统集成)部分容易出现问题,会消耗大量的通信成本和时间成本,直接减慢进度。因此,经验证的项目管理流程(包括通信管理、流程管理)在大型项目中发挥了巨大作用。目前敏捷开发是主流,持续整合、持续提供和持续构建有助于高效实施敏捷流程,促进发展、运输和质量保证(QA)部门之间的沟通、合作和一体化。
1.2 CICD的变化
一般来说,开发工作流程分为编码、构建、集成、测试、交付、部署阶段(见图1-1),持续集成、持续交付和持续部署涵盖了这些阶段。为了提高效率,优化每个步骤可以缩短软件交付时间。持续集成、持续交付和持续部署过程是软件开发优化过程。
图1-1 CICD流程
墨菲定律都不陌生。越担心什么,就越担心会发生什么事。(威廉莎士比亚,哈姆雷特,)系统对接等多个团队合作的时候,我们担心对接是否顺利进行,往往我们担心的事情会经常受到整合的困扰。(威廉莎士比亚,温斯顿,球队名言) (以英语发言)许多球队担心,由于没有采取有效措施防止这种情况发生,从而延长交货时间。既然担心,我们为什么不早点合并,先暴露问题呢?
目前,大多数公司都使用版本控制工具(如GitLab、SVN等版本控制工具)来管理源代码。在版本管理的这一部分,公司将根据自己的实际情况制定版本管理方法。对于持续集成,业界最好只保留一个源仓库,以降低版本管理的复杂性。开发人员不断提交修改,自动触发编译,自动集成,自动测试自动化,及早反馈集成过程中的问题,可以更好地防止平时不集成,集成出现问题的现象。
通过自动化的持续集成固化管理流程。保证一体化的秩序和可靠性。减少版本发布的不符合性(开发或测试手动打包,每天多个打包,更新多次,测试不足),确保版本控制,并可跟踪问题(任何版本出现的问题都可以回溯)。
固定这种持续的集成过程,形成自动化的过程,就具备了持续的集成功能,软件交付的可靠性大大提高,这也是无形的竞争力。(大卫亚设,Northern Exposure,软件提供者)这种竞争力保证了整合的秩序和可靠性。流程的自动化可以抛弃人力,降低错误率,提高速度,自然就能降低成本。
1.3 CICD实施现状
日常生活中处处反映着“快”字,互联网是对更快追求的极致。持续整合、持续提供、持续部署在互联网行业更为广泛。作者没有统计哪些公司在使用,只是圈内的朋友公司进行了持续的整合,具备持续的传达能力。持续部署不是很广泛。最终,持续部署不仅包括技术问题,还包括管理、运营等问题。特别是一些金融企业、大型国企、开发团队外包、测试外包、运营半外包、安全性要求高,难以快速实施。大多数情况下,最好能在测试环境中制作CICD。
阿里云、腾讯云、网易蜂窝等国内云均提供GitLab下拉代码、编译包、单元测试、镜像制作、容器发布功能。此过程实际上是持续集成、持续交付的过程,并提供持续部署功能。基本上,持续的整合、持续的交付和持续的部署。
一种服务能力,是云平台必须具备的能力。下面引自2017 年DevOps 现状调查报告。
统计资料显示,DevOps 正在各个行业、各种规模的企业中落地。DevOps 团队的比例在2014 年是16%,在2015 年是19%,在2016 年是22%,在2017 年已经增长到27%,越来越多的企业和团队开始拥抱DevOps。图1-2 是2017 年DevOps 现状调查报告统计的从业分布情况。
完整的报告可以从qcloudimg 网站下载。
在本书撰写过程中2018 年DevOps 现状调查报告也已经出来,图1-3 是精英级执行团队使用DevOps 后的效率。
精英级执行团队在以下几个方面有着突出的表现。
1)代码发布频率高46 倍。
2)代码从提交至发布的速度快2555 倍。
3)故障变更率降低1/7。
4)事故恢复时间快2604 倍。
另外,云计算持续增长(见图1-4)。有17%的调查者仍然没有使用云厂商的服务。AWS最受欢迎,占比为52%,Azure 屈居次席,占比为34%。
1.4 CI&CD 技术栈
目前持续集成、持续交付、持续部署在开源社区都是热点,用户可以方便地利用这些开
源组件来构建自己企业的持续集成、持续交付及持续部署平台。
持续集成工具中以Jenkins 使用最为广泛,由Jenkins 来作业化持续集成过程;利用GitLab
来管理程序版本;利用Gerrit 来做代码审核;利用Sonar 进行代码质量扫描;利用JUnit 进行
单元测试;利用Docker compose 来构建镜像;利用Docker 来部署容器;利用Kubernetes、
Rancher 等进行服务编排。图1-5 显示了常见的CI&CD 技术栈。后续讲解CI&CD 落地时会
运用到其中的一些技术与工具。当然,基本上都运用开源工具,这也有助于企业在落地时节
省费用。
腾讯研发总监leo fan,阿里巴巴高级技术专家吴毓雄,滴滴出行高级技术专家任杨,飞谷云创始人\大数据实战专家\平安壹钱包前大数据架构师张粤磊联合推荐
来自一线的实践经验,深入呈现技术细节;详实的实操示例,即学即用的实战技术
讲解了持续集成中引人入胜的内容:CI/CD到底要解决什么问题?它与DevOps之间的关系是怎样的?程序员如何用工具化的系统持续进行代码的版本管理、构建、打包、集成、测试和部署?利用云平台和容器技术实现弹性伸缩价值等
1.《【集成电路的qa是什么】程序员为什么要理解持续集成和持续交付?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【集成电路的qa是什么】程序员为什么要理解持续集成和持续交付?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/3004378.html