领导让我调研CI/CD,我给他看了这个

一、概念解释


CI/CD是指持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是现代软件开发中的重要实践。它们旨在通过自动化和持续化的方式改善软件开发、测试和交付过程。

  1. CI(Continuous integration):持续集成,指的是频繁地将代码集成到主干
  2. CD(Continuous delivery):持续交付,指的是频繁地将软件的新版本交付给用户,以供评审
  3. CD(Continuous Deployment):持续部署,是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境
  4. CT(Continuous Test):持续测试,保证上述3个流程质量的过程(通常也在CI中体现)

二、持续集成(CI)的好处


1、快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易

2、防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

三、持续集成(CI)的目的


让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成

四、为什么我们做不了(持续交付)CD


首先要说明的是,这里的持续交付是针对搭建CI/CD体系而言。

为什么我们做不了持续交付,由于实际工作中,正式环境搭建CI/CD体系的不一定是质量团队甚至不会让质量团队去做,而质量团队搭建的也只是(持续集成)CI部分,以保障自动化测试提效作用。

不能做CD其中的原因一是公司上线流程就没有将这部分交给质量团队做,第二个原因就是嵌入式软件发布方式与互联网软件发布方式不同,所以基于目前的这种纯软件流程的(持续交付)CD方式不能实现我们产品的CD。

五、常见CI/CD工具


Jenkins、Travis CI、Circle CI、TeamCity、GitHub Actions等等

  1. Jenkins

    • 优点:开源、可定制性强、拥有丰富的插件生态系统、支持大规模部署
    • 缺点:需要较多的配置和管理、UI设计相对陈旧
  2. Travis CI

    • 优点:易于使用、针对GitHub仓库提供无缝集成、支持Linux和macOS环境
    • 缺点:免费版功能受限、不适用于私有项目
  3. CircleCI

    • 优点:云端托管、易于配置、支持Docker构建、适用于小型团队
    • 缺点:收费较高、限制较多
  4. GitLab CI/CD

    • 优点:集成于GitLab仓库、开源版本功能完备、支持自动DevOps流程
    • 缺点:企业版收费较高、不适用于非GitLab托管的项目
  5. TeamCity

    • 优点:功能强大、易于集成、支持多种构建工具
    • 缺点:商业软件,需要购买许可证
  6. GitHub Actions

    • 优点:集成于GitHub、免费版功能完备、便于与GitHub仓库集成
    • 缺点:新产品,部分功能可能尚未成熟

选择CI/CD工具时,从几点出发:

  1. 易于安装、使用
  2. 安装位置选择:云、本地、虚拟环境(k8s、docker)
  3. 最重要的一点,是否开源

选择Jenkins是满足了开源、本地部署、易于安装这几点条件的

六、持续集成(CI)的最小流程


 

七、可扩展环节


持续集成本质是流程自动化的体现,所以都是基于现有的手工流程修改完善出来的,完善的流程都是建立在上述最小流程之上的,通常扩展环节出现在三个位置:新建任务、构建前操作、构建后操作。

常见扩展环节有:流程定时任务化、任务串联(多个子任务合并成一个大任务)、增加构建前的代码静态扫描、代码审计、构建后的自动化测试、关联构建后的问题记录、bug上报等等。

实现这些扩展环节,离不开Jenkins提供的大量的插件,如代码静态扫描使用的Sonar、自动化测试报告查看用的Html Publisher、邮件发送用的Email Extension等等上千种。

八、几种搭建方法


1、本机搭建:将安装包下载至Windows电脑,进行启动,流程中所有环节均在本机执行

优点:

  1. 搭建过程相对简单,能够保证最基本使用
  2. 不需要申请服务器资源

缺点:

  1. 需要多端维护CI环境,一旦流程发生变换,使用端都需要进行修改,服务端部署则是一端维护,多端使用
  2. 不利于环境统一:编译环境、运行环境、测试执行环境
  3. 本地搭建,使用者想要接入这套系统需要每人搭建一套环境
  4. 需要保证电脑无休息运行

2、服务端搭建:将Jenkins安装在一个服务器上,作为Master节点,代码管理、编译、运行、测试执行分别按需扩展节点(Jenkins Slave),节点机可以是同Master节点相同的服务器,也可以是网络互通的Windows机器。

优点:

  1. 符合标准持续集成环境搭建方案
  2. 可以一端维护,多端使用
  3. 节点可扩展性高

缺点:

  1. 需要申请服务器资源
  2. 测试端需要和硬件连接的部分,只能使用Windows电脑作为Jenkins执行节点,需要考虑网络互通问题

3、局域网搭建:同搭建方式2,只是所有节点均为Windows电脑,需要保证所有电脑网络互通。

优点:

  1. 结合了搭建方式1和2的所有优点
  2. 网络互通,Jenkins节点可以灵活地使用Windows,对于需要对接硬件测试的可以无缝衔接

3)Jenkins Master在Windows、Windows上的虚拟机、服务器上均能搭建

缺点:

Jenkins Master在Windows搭建时,需保证电脑无休息运行

九、实例展示


1、任务列表展示

2、自动化测试结果概览展示

 

3、任务构建流程-基础配置项展示

 

4、任务构建流程-源码管理配置项展示

 

5、任务构建流程-构建前操作配置项展示

 

6、任务构建流程-构建配置项展示

 

7、任务构建流程-构建后操作配置项展示

 

CI/CD的实施可以带来以下好处:

  • 更快的交付周期:通过自动化流程,加速软件的构建、测试和部署过程,从而更快地交付软件。
  • 更高的质量:通过频繁的集成、自动化测试和部署,降低软件缺陷的风险。
  • 更好的团队协作:减少手动操作,增强团队之间的沟通和合作。
  • 更好的反馈机制:及时发现和解决问题,提高开发人员对代码质量和系统状态的认识。

总之,CI/CD是一种通过自动化、持续化和频繁化的方式来改善软件开发、测试和交付流程的实践,有助于提高软件交付的效率和质量。

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旦莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值