首页 > 其他分享 >一文搞定持续集成核心概念

一文搞定持续集成核心概念

时间:2023-09-27 11:07:59浏览次数:29  
标签:集成 搞定 一文 部署 持续 测试 自动化 交付


持续集成基础概念

持续集成CI(Continuous Integration)是一种软件开发实践,团队成员频繁地将他们的工作成果集成在一起。通常是每人每天至少提交一次,这样每天就有多次集成。每次提交后,自动触发一次包含自动化测试的构建任务,以便能尽早发现集成问题。

一文搞定持续集成核心概念_持续集成

通过这种方式,许多团队大大减少了集成阶段的问题。由此可以看出,持续集成是一种质量反馈的机制,能够尽早地发现代码中的问题,并提前解决问题。持续集成这个术语最早是在1994年由Grady Booch提出的,目前能看到的关于持续集成最多的描述,来源于Martin Flower发表的一系列论文。Martin Flower为持续集成总结了以下一些原则:

  1. 维护一个统一的代码库;
  2. 每天都必须向主干提交代码;
  3. 每次提交都应立刻在集成环境进行构建;
  4. 自动化构建;
  5. 自动化测试;
  6. 自动化部署;
  7. 快速、持续构建;
  8. 构建环境务必于生产环境保持一致;
  9. 访问权限对团队成员保持公开透明;

总结:

持续集成中的持续的意思并不是“始终,一直”,它的意思是“随时”。比较恰当的频率是:每当有人提交代码,同时集成一次。

持续集成包括:自动编译+自动代码检查+自动打包+自动化测试+自动部署。

做持续集成的原因

本质:解决项目中常见的问题

  • 由于长期在各自的分支上开发,导致在集成阶段合并分支时产生大量冲突,无法合并;
  • 由于之前并未进行过任何集成,导致在集成阶段耗时太长,或者根本无法集成;
  • 重复进行手工的部署、调试、测试、发布,成本高,风险大;

持续集成的优点

  • 持续集成并不能消除bug,却能帮你快速的发现bug并予以清除;
  • 持续集成能提升交付效率和交付软件的质量;
  • 及时反馈结果,尽早发现问题;
  • 自动化代替手工,工程师将更多的时间精力放在设计、需求分析、风险预防等方面;

持续交付

理解了持续集成,持续交付(CD:Continuous Delivery)就很容易掌握了。持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中。如果测试没有问题,可以继续手动部署到生产环境中。注意:这里的测试重点是指测试人员进行的产品级别的测试!往往在这个测试过程中普遍都会引入测试脚本进行自动化回归测试,主要是进行接口测试和UI测试(业界公认做法是重接口轻UI),当然部分公司也会引入安全测试和性能测试。持续交付能够以较短地周期完成需求的小粒度频繁交付。频繁的交付周期带来了更迅速的对软件的反馈,并且在这个过程中,各个角色密切协作,相比于传统的瀑布式软件团队,更少浪费。

一文搞定持续集成核心概念_devops_02

持续部署

持续部署(CD:Continuous Deployment)则是在持续交付的基础上,把部署到生产环境的过程自动化(如上图)。整个过程无需人工参与!

核心工具的使用

持续集成、持续交付、持续部署是需要大量的工具作为支撑的!整个核心工具链如下图所示:

一文搞定持续集成核心概念_持续集成_03

  • 整个流程的串联使用Jenkins
  • 代码(java)构建使用git、gitlab、maven、nexus等工具
  • 代码的自动化测试使用Junit、sonarqube等工具
  • 环境的自动化部署使用docker 、hrbor、kubernetes等工具
  • 产品的自动化测试使用selenium、jmeter等工具
  • 产品的运行日志分析以及监控使用elastic

标签:集成,搞定,一文,部署,持续,测试,自动化,交付
From: https://blog.51cto.com/liwen629/7621624

相关文章

  • 测试驱动技术(TDD)系列之1:一文带你上手测试数据驱动
    数据驱动的意义数据驱动,指在自动化测试中处理测试数据的方式。通常测试数据与功能函数分离,存储在功能函数的外部位置。在自动化测试运行时,数据驱动框架会读取数据源中的数据,把数据作为参数传递到功能函数中,并会根据数据的条数多次运行同一个功能函数。数据驱动的数据源可以是函数外......
  • 五分钟搞定幂等本质
    幂等概念幂等性原本是数学上的概念,即使公式:f(f(x))=f(x)能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等......
  • 一文读懂倒排序索引涉及的核心概念
    基础概念相信对于第一次接触Elasticsearch的同学来说,最难理解的概念就是倒排序索引(也叫反向索引),因为这个概念跟我们之前在传统关系型数据库中的索引概念是完全不同的!在这里我就重点给大家介绍一下倒排序索引,这个概念搞明白之后,然后学习Elasticsearch就会清晰很多了。正向索引和......
  • 一文告诉你Istio和 spring cloud该怎么选
    相信了解SpringCloud的朋友在刚刚开始接触Istio的时候一定会有一个疑问:Istio和springcloud也太像了,他们都可以提供服务发现、负截均衡、限流、链路跟踪、鉴权等微服务治理手段,那么二者的主要区别是什么呢?本文就会带大家理解二者的区别,如果您目前对微服务和ServiceMesh还不了......
  • 一文读懂:下一代微服务技术Service Mesh
    相信提到微服务大家一定不会陌生,但是说起服务网格,即ServiceMesh,很多同学可能就会画大大的问号了!话不多说先给结论:我们可以简单的把ServiceMesh理解为网络代理,它可以解决传统微服务中的痛点,把服务通信及相关管控功能从业务中分离!网络代理网络代理可以简单类比成现实生活中的中......
  • 一文搞定Pandas核心概念之Series
    Pandas概述Pandas是Python语言的一个扩展程序库,他是一个强大的分析结构化数据的工具集,基础是Numpy,用于数据分析。安装Pandas命令:pipinstallpandasPandas的主要数据结构是Series(一维数据)与DataFrame(二维数据),Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据......
  • 一文搞定Pandas核心概念之DataFrame
     DataFrame概述DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。如下图所示:整个表格是DataFrame,每一列就是一个Series。关于Series可以参考文......
  • 干货!一文搞定无头浏览器的概念以及在selenium中的应用
     无头浏览器无头浏览器,即HeadlessBrowser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括JavaScript解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用GUI测试框架的截图功能截取它执行中的页面。在这里强调一下......
  • 测试技能提升篇——一文理解消息中间件里那些通用的核心概念
    我们测试同学在实际工作中或多或少都会接触过ActiveMQ、RabbitMQ,Kafka,和RocketMQ这类消息中间件产品,不同的公司会选择不同的产品,大家可能会觉得产品比较多,了解起来有些复杂!其实无论使用哪种中间件产品,他们的核心功能都是比较类似的。本文就不来汇总一下中间件产品的核心概念,给大家......
  • 搞定!详解MeterSphere 配置外部Mysql5.7的全过程
     最近试用了MeterSphere做接口测试平台,感觉使用起来非常方便,最重要的是开源免费!官方文档还是非常详细的,这里我就不多介绍了,感兴趣的同学可以参考:https://metersphere.io/docs/v2.x/经过讨论,决定在测试团队推广。由于公司数据库管理策略,数据库必须通过dba统一管理,所以需要MeterSph......