90%的开发都没搞懂的CI和CD!

Wesley13
• 阅读 707

据IDC统计,2017年,DevOps的全球软件市场已达到约39亿美元的水平,预计到2022年市场将达到80亿美元左右!

在敏捷软件开发环境中,工作模型和操作需要对公司不断变化的需求具有超级灵活的能力。DevOps——一种工具和实践的结合,有助于软件开发与IT运维并携手共进。这种跨功能的工作模式旨在最小化系统开发生命周期的持续时间,并提供持续的部署和交付。

实施CI和CD的方式

你可能有很多想法,你的产品创意可能是最好的,但如果你不经常交付新版本,那么你将很难与周边的竞争对手匹敌。持续集成(CI)和持续交付与部署(CD)是对代码的所有主要和次要更改集成到一起并一同交付,或者添加新功能或产品,甚至可以是Bug修复。

这些代码更改始终保持可部署状态,并自动发布到预生产环境中。通常情况下,这种情况会在一天内至少发生一次或多次。这种实践将鼓励频繁地提交小的更改,而不是不频繁地提交大的更改。

CI/CD管道的渗透性

CI/CD管道是将软件应用程序交付给客户或客户端的一种途径。这个过程要经过持续的集成,即添加代码更改或修改现有代码、自动测试阶段、交付更改,以及随后部署到登台环境中。它自动化了软件开发中涉及的所有步骤。

CI/CD管道中的各个阶段

源代码/提交阶段

这一阶段主要是增加新的功能,或者是对现有的工作模式进行一些小的修改,以便更有效地工作以满足客户的需求。管道在这里由源代码存储库触发。代码中的任何更改都会触发通知。

构建阶段

编译源代码,系统在构建阶段运行单元测试。一旦单元测试通过,集成测试就完成了。这个阶段出现的所有问题都必须立即解决。Docker工具用于创建服务器并将数据移动到注册表中,以便为下一个测试阶段做好准备。

测试阶段

自动测试在这个阶段进行,以确保整个软件中没有Bug,同时也检查软件是否满足预期功能。这些测试从最终用户的角度进行,以验证代码的质量。测试阶段的失败表明代码的不准确,这会导致开发人员返工,测试循环继续进行。

部署阶段

一旦软件通过测试阶段,可执行程序就可以部署到生产环境中了。在将它们直接推送到生产环境之前,最好有一个内部工作就像生产工具一样的登台环境。登台环境充当额外的测试和评审。一旦它通过测试和审查不存在Bug,程序被部署到生产中。

CI/CD管道优点一览表

构建任何软件的主要目的都是为问题提供健壮的解决方案。软件必须是准确的,最小化所涉及的风险,并且应该尽快交付给客户。CI/CD管道有助于构建这种健壮而准确的软件。如果一个公司适应了敏捷方法中的CI/CD管道,那么它可以得到以下好处:
●通过单元测试和功能测试,在每次迭代中检测到不准确的代码和不一致的结构。
●故障检测和修复率的提高导致新发布日的增加。这将有助于产品团队将更多精力集中在客户对产品工作的新需求上。对发布的功能进行快速反馈是为了达到这个目的。
●通过质量和压力测试来测试产品的耐用性。
●CI/CD管道中的代码更改相对较小,这是通过以更快的速度集成代码片段来实现的。

●当代码错误出现时,通过分离代码错误,代码更改更小,平均解决时间越短。

90%的开发都没搞懂的CI和CD!

CI/CD管道对开发和运维的重要性

在软件革命的新时代,开发人员和运维人员一起工作。这种情况下,两者的目标往往是相对独立且明确的,会导致环境中的混乱。开发人员和运维人员通过一组正式称为“DevOps”的工具和实践进行结合。CI/CD管道是DevOps实践和工具的支柱。DevOps遵循持续集成、持续交付的原则,并通过自动化测试进行开发。

高速度

在其工作模型中包含CI/CD管道的软件应用程序通过不断的反馈活动对代码中的更改或新特性的添加做出更快的响应。

效率提高

随着响应变得更快,新的代码更改将有效地实现到应用程序中,从而提高了生产率。

开发周期较短的高质量软件

由于CI/CD流水线中的每个过程都可自动化,使得软件开发的生命周期缩短。虽然生命周期较短,但通过不断反馈和定期实施修订的程序,仍可对质量保持密切监督。

可靠性

CI/CD管道始终是可靠的,在运行时不会反弹。当运行时由于多个失败而受阻时,开发人员会感到沮丧。由于在CI/CD管道中有恒定的反馈和故障分离,使得软件更加可靠和易于使用。

降低测试成本

由于测试是自动化的,管道可以在几秒钟内处理数百个测试,并提供可靠的输出。在传统的软件开发模型中,成百上千的测试花费了大量的成本。在DevOps中,测试成本不高,而且运行速度非常快。

90%的开发都没搞懂的CI和CD!

禅道对DevOps和持续集成的支持,包括Git、Subversion版本系统集成,Jenkins构建任务触发,以及ZTF自动化测试调度几个方面。通过禅道自研的ZTF自动化测试工具,可很好地驱动8种单元测试框架、3种自动化测试框架来执行测试,并把最终结果回传给禅道,进行统一的报告展示。禅道ZTF打通了项目管理和持续集成工具之间的沟壑,贯穿持续集成、持续测试、持续部署等DevOps生命周期的不同阶段。

禅道,为您提供专业的DevOps解决方案。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这