DevOps学习笔记

对CI/CD的学习理解

1、持续集成(Continuous Integration)

Continuous Integration:持续集成,简称CI,是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后自动进行构建和测试。简单来说持续集成就是一个监控版本控制系统中代码变化的工具,当发生变化是可以自动编译和测试以及执行后续自定义动作。

1.1构成
  • 自动化构建
  • 自动化测试
  • 自动化集成
1.2自动化构建
1.2.1自动化构建
  • 将源码编译成为二进制码
  • 打包二进制码
  • 进行自动化测试
  • 生成文档
  • 生成分发媒体
1.2.2自动化构建较为重要的三部分
  • 版本控制工具

    SVN、Git、CVS

  • 构建工具

    是持续集成的核心,对源代码进行自动化编译、测试、代码检查、打包、部署到服务器

    例如在Java中较为出名的有Maven、Ant、Grandle

  • CI服务器

    提供了一个平台,用于整合版本控制和构建,如:Jenkins、Continuum、CruiseControl

1.3自动化测试

自动化测试是持续集成中必不可少的一部分,通过持续集成尽早暴露出源码中存在的问题,需要较为完整的测试用例,并且一直维护测试用例。包括:

  • 单元测试
  • 集成测试
  • 系统测试
  • 验收测试
  • 性能测试
1.4持续集成的优点
  • 易于定位错误:每一次的代码集成都需要执行相关的测试工作,持续集成频繁的集成次数天然的将复杂的代码逻辑切割为了小块,也就使得每一次测试中遇到的错误能够更加容易的被定位。
  • 易于控制开发流程:更为细致的工作提交也就意味着更容易判断当前的工作进度,这对于管理者规划开发流程而言提供了一个有效的参考,同时也为开发人员省下了汇报工作的时间。
  • 易于CodeReview:对于大块工作的切分自然也有助于做 CodeReview。
  • 易于减少不必要的工作:build 以及 test 过程的自动化可以为你节约更多时间。

2、持续交付(Continuous Delivery)

2.1持续交付的概念

持续交付,简称CD,是在CI的基础进行了扩展,在CI环节完成了软件构建和测试工作并形成了新的版本,那么接下来就要进行交付,而这里的交付并不是交付到生产环境,而是类生产环境(STAGING),我们可以理解为灰度环境或者预发环境,进而接受部分真实流量的测试。如果没有问题的话则通过手动的方式部署到生产环境。

  • 一种能够使得软件在较短的循环中可靠的发布的软件工程方法,目的在于更快更频繁地构建、测试和发布软件。
  • 与持续集成相比,持续交付的侧重点在于交付,其核心对象不在于代码,而在于可交付的产物。
  • 由于持续集成仅仅针对于新旧代码的集成过程执行了一定的测试,其变动到持续交付后还需要一些额外的流程。
2.2特性

在这里插入图片描述

  • 与持续集成相比较,持续交付添加了 Test -> Staging -> Production 的流程,也就是为新增的代码添加了一个保证: 确保新增的代码在生产环境中是可用的
  • 在这一增加的流程中,Test 环节不仅仅包含基本的单元测试,还需要延伸到更为复杂的功能测试以及集成测试等。
  • Staging指的是伪生产环境 ,其尽可能的对真实的网络拓扑、数据库数据以及硬件设备等资源进行模拟,从而为测试人员反馈代码在生成环境中的可能表现。
  • 流程中每一个环节的执行结果都会对开发人员进行反馈,每一个出现的错误都会导致版本的回滚。当测试完毕确认无误之后,将由相关人员对其进行手动部署到生产环境。

3、持续部署(Continuous Deployment)

Continuous Deployment:持续部署,简称CD,它是在持续交付的基础上打通最后一公里的工作,就是把手动部署到生产环境的方式升级为自动部署。

  • 在持续交付的实践中,交付的目标是QA,但是实际上,软件最终是要交付到客户手上的。在SaaS领域里,持续部署采用得比较广泛,因为服务比较容易做到静默升级。

  • 采用持续部署的前提是自动化测试的覆盖率足够高。

  • 采用持续部署的好处是能减少运维的工作量,缩短新特性从开发到实际交付的周期。

  • 持续交付相比持续集成的区别在于对部署的自动化

4、总结

持续集成、持续交付和持续部署其目的是减少代码改动到投入生产的所需时间,提早发现风险、减少QA的测试时长、减少运维的人工干预。整体上是一个提效的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值