首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI&CD 体系介绍

CI&CD 体系介绍

作者头像
测试加
发布2023-02-17 17:06:03
8470
发布2023-02-17 17:06:03
举报

前言

先解释几个概念:

1、DevOps(Development & Operations)

DevOps 是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、过程和工具。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

2018年 DevOps 的现状调查报告已经出来,下图是精英级执行团队使用DevOps 后的效率。精英级执行团队在以下几个方面有着突出的表现。

1)代码发布频率高46 倍。

2)代码从提交至发布的速度快2555 倍。

3)故障变更率降低1/7。

4)事故恢复时间快2604 倍。

CI / CD 是什么?

A、持续:

“持续”用于描述遵循不同流程实践。这并不意味着“一直在运行”,而是“随时可运行”。它还包括几个核心概念/最佳实践。这些是:

1)频繁发布:能够频繁地交付高质量的软件。

2)自动化流程:包括构建、测试、版本控制、集成等等。

3)快速迭代:“快速”在这里是个相对术语,但无论软件更新/发布的频率如何,预期的持续过程都会以高效的方式将源代码转换为交付物。

B、持续集成:

持续集成(CI)是一种高效率的软件开发实践。在持续集成中,团队成员频繁的集成他们的工作成果,每人一天可以集成多次,每次集成都会经过自动化构建(包括静态扫描,自动化测试等)的检验,以尽快发现错误。许多团队发现这种方法可以显著减少集成引发的问题,并可以加快团队合作软件开发的效率(以上引用自 Martin Fowler 对持续集成的定义)

C、持续交付和部署:

持续交付(CD)指频繁的将软件的新版本交付给质量团队或者用户,以供评审,评审通过即可进入生产阶段。

持续部署(CD)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境中。

从下图中可以更清晰看到三者的关系:

目前持续集成、持续交付、持续部署在开源社区都是热点,用户可以方便地利用这些开源组件来构建自己企业的持续集成、持续交付及持续部署平台。

常用的 CI/CD 工具有哪些?

CI/CD 工具可以协助团队自动进行开发、部署和测试。有些工具专门处理集成(CI)方面的问题,有些工具负责管理开发和部署(CD)工作,而另外一些工具则专注于持续测试或相关功能。

1、jenkins :持续集成工具中以Jenkins 使用最为广泛,由Jenkins 来作业化持续集成过程;

2、GitLab:利用GitLab来管理程序版本;

3、Gerrit:利用Gerrit 来做代码审核;

4、Sonar:利用Sonar 进行代码质量扫描;

5、Docker:最火的容器化方案,可使用 Docker 来进行本地代码调试,可利用Docker compose 来构建镜像;可利用Docker 来部署容器。

6、Kubernetes :容器技术的另一种比较火的方案。

此外,任何工具只要是 DevOps 的基本工具,就有可能属于 CI/CD 流程的一部分。用于配置自动化(如 Ansible、Chef 和 Puppet)、容器运行时(如 Docker、rkt 和 cri-o)以及容器编排(如 Kubernetes)的工具严格来说不算是 CI/CD 工具,但它们也现身于许多 CI/CD 工作流中。

下图显示了有 Docker 参与的 CI&CD 过程:

CI/CD 能做什么?

CI/CD 可以协助团队自动进行开发、部署和测试。有些工具专门处理集成(CI)方面的问题,有些工具负责管理开发和部署(CD)工作,而另外一些工具则专注于持续测试或相关功能。

CI/CD 的构建结果以及报告(测试、安全等)直接反馈到 MR(Merge Request)中,打通了各个环节的数据流,避免了数据孤岛的形成,同时为研发、代码审核人员提供代码是否能够合入的决策能力,从源头保证代码质量以及应用程序安全。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用的 CI/CD 工具有哪些?
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档