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

翻译
2020-08-24 09:00:00
李晓琳
1483
摘要:在敏捷软件开发环境中,工作模型和操作需要对公司不断变化的需求具有超级灵活的能力。DevOps——一种工具和实践的结合,有助于软件开发与IT运维并携手共进。这种跨功能的工作模式旨在最小化系统开发生命周期的持续时间,并提供持续的部署和交付
据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管道中的代码更改相对较小,这是通过以更快的速度集成代码片段来实现的。

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

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

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

高速度

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

效率提高

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

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

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

可靠性

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

降低测试成本

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



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


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


发表评论
评论通过审核后显示。