浅谈CI持续集成

1.什么是持续集成

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

2.为什么要持续集成

  • 防止”集成地狱“的发生
  • 兼容性问题:不同模块之间可能有接口不兼容的问题。
  • 冲突和重叠:多个开发人员修改了同一个文件或功能模块,导致代码冲突,难以合并。
  • 依赖问题:一些模块可能依赖于其他模块的特定版本或功能,这些依赖关系如果处理不当会导致系统无法正常运行。
  • 测试困难:由于模块是分开开发和测试的,整体集成后可能会发现许多以前未发现的错误导致测试和调试工作量激增。

3.CI的理念和优势

CI的起源:源自极限编程,是敏捷开发的方法之一。

核心理念:通过频繁的小规模集成,减少每次集成的风险和不确定性。

主要优势:

  • 提升软件质量
  • 改善用户需求响应速度
  • 减少最终阶段返工浪费
  • 提高软件交付效率

4.CI成功实践的关键

4.1第一阶段:每次提交触发完整的流水线
快速集成:CI的核心理念
关键词:快速集成:将集成速度做到极致,每次变更都触发CI。

变更触发:包括代码、配置、环境和数据变更,所有元数据变更都纳入版本控制。

触发方式:通过事件或Webhook通知CI平台,确保每次提交触发持续集成。

工具示例:Jenkins支持多种触发方式,如定时触发、轮询触发和Webhook触发。实现快速集成需要打通版本控制系统(如Gitab)和CI系统(如Jenkins)的集成。前置条件
统一的分支策略、清晰的集成规则、标准化的资源池、足够快的反馈周期。

4.2第二阶段:每次流水线触发自动化测试

关键词:质量内建:CI旨在尽早发现问题,包括构建失败和质量不达标(如测试失败、代码规约不符合标准)。
自动化测试的重要性:自动化测试能力对于CI平台至关重要。
选择合适的测试活动、树立测试结果的公信度、提升测试活动的有效性。

4.3第三阶段:第一时间修复问题

  • 确保CI可用性的团队规则
  • 建立清晰规则:确保CI问题在规定时间(如10分钟)内修复,保持集成主线的可用性。
  • 自动回滚:在规定时间内未修复时,自动回滚代码。
  • 停止提交:CI“亮红灯”时,团队停止提交新代码,避免在错误基础上验证新提交。
  • 集体修复:团队成员集体修复CI问题,恢复CI状态。
  • 长期好处:团队需深信CI的长期好处超过短期投入,积极践行CI规则。

5.流水线平台特征

流水线是持续交付中最核心的实践,也是持续交付实践最直接的体现。一个符合现代软件工程实践的流水线平台应该具备的特征

6.垂直业务平台的定义与特点

  • 什么是垂直业务平台

        垂直业务平台,就是指单一专业领域的能力平台,比如自动化测试平台、代码质量平台、运维发布平台等等,这些也是软件交付团队日常打交道最频繁的平台。

  • 垂直业务平台的特点

        垂直业务平台则专注于专业能力的建设、一些核心业务的逻辑处理、局部环节的精细化数据管理等。垂直业务平台可以独立对外服务,也可以以插件的形式,将平台能力提供给流水线平台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JUnit介绍:单元测试

1、什么是单元测试 单元测试是针对最小的功能单元编写测试代码(Java 程序最小的功能单元是方法)单元测试就是针对单个Java方法的测试。 2、为什么要使用单元测试 确保单个方法运行正常; 如果修改了代码,只需要确保其对应的单元…

Active RIS-Aided ISAC Systems: Beamforming Design and Performance Analysis

文章目录 II. SYSTEM MODELC. Active RIS Model III. PROBLEM FORMULATIONA. Radar Performance MetricC. Optimize Φ V. PERFORMANCE ANALYSIS OF THE RADAR SINR IN ACTIVE RIS-AIDED SENSING SYSTEMSA. Simplified System SettingB. Power Scaling Law AnalysisC. Active R…

python之Django连接数据库

文章目录 连接Mysql数据库安装Mysql驱动配置数据库信息明确连接驱动定义模型在模型下的models.py中定义表对象在settings.py 中找到INSTALLED_APPS添加创建的模型 测试testdb.py中写增删改查操作urls.py添加请求路径启动项目进行测试 连接Mysql数据库 安装Mysql驱动 pip inst…

网页端五子棋对战(四)---玩家匹配实现上线下线处理

文章目录 1.游戏大厅用户匹配1.1请求和响应1.2设计匹配页面1.3获取玩家信息1.4玩家信息的样式设置1.5初始化我们的websocket1.6点击按钮和客户端交互1.7点击按钮和服务器端交互 2.服务器端实现匹配功能框架2.1方法重写2.2借用session 3.处理上线下线3.1什么是上线下线3.2实现用…

matlab finv()函数解释 F分布 和 逆累积分布函数 卡方分布

1.Earths flattening 翻译并解释含义 "Earths flattening" 翻译为中文是“地球的扁率”。 含义解释: 地球的扁率是指地球形状偏离完美球形的程度。地球并非一个完美的球体,而是一个扁球体,即在两极略微扁平,赤道略微…

qt QSettings详解

1、概述 QSettings是Qt框架中用于应用程序配置和持久化数据的一个类。它提供了一种便捷的方式来存储和读取应用程序的设置,如窗口大小、位置、用户偏好等。QSettings支持多种存储格式,包括INI文件、Windows注册表(仅限Windows平台&#xff0…

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智行无忧停车场管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 车辆信息管理功能 5.0 停车位管理功能 6.0 入场登记管理功能 7.0 预约管理功能 8.0 收费规则功能 9.0…

openssl使用哈希算法生成随机密钥

文章目录 一、openssl中随机数函数**OpenSSL 随机数函数概览**1. **核心随机数函数** **常用函数详解**1. RAND_bytes2. RAND_priv_bytes3. RAND_seed 和 RAND_add4. RAND_status **随机数生成器的熵池****常见用例****注意事项** 二、使用哈希算法生成随机的密钥 一、openssl中…

【PlantUML系列】序列图(二)

目录 一、参与者 二、消息交互顺序 三、其他技巧 3.1 改变参与者的顺序 3.2 使用 as 重命名参与者 3.3 注释 3.4 页眉和页脚 一、参与者 使用 participant、actor、boundary、control、entity 和 database 等关键字来定义不同类型的参与者。例如: Actor&…

从excel数据导入到sqlsever遇到的问题

1、格式问题时间格式,excel中将日期列改为日期未生效,改完后,必须手动单击这个单元格才能生效,那不可能一个一个去双击。解决方案如下 2、导入之后表字段格式问题,数据类型的用navicat导入之后默认是nvarchar类型的&a…

On-Chip-Network之router微架构的物理实现

Low-Power Microarchitecture 自20世纪90年代以来,功耗一直是嵌入式芯片和高性能芯片面临的一个挑战。自2000年代中期以来,它已经成为大多数设计的主要约束。多核解决了功耗问题,由此产生的communication substrate,namely the on…

路径规划之启发式算法之四:蚁群算法(Ant Colony Optimization,ACO)

蚁群算法(Ant Colony Optimization,ACO)是一种模拟蚂蚁觅食行为的启发式搜索算法,由Marco Dorigo于1992年在他的博士论文中提出。该算法适用于解决组合优化问题,如旅行商问题(TSP)、车辆路径问题…

LabVIEW密码保护与反编译的安全性分析

在LabVIEW中,密码保护是一种常见的源代码保护手段,但其安全性并不高,尤其是在面对专业反编译工具时。理论上,所有软件的反编译都是可能的,尽管反编译不一定恢复完全的源代码,但足以提取程序的核心功能和算法…

RabbitMQ消息可靠性保证机制6--可靠性分析

在使用消息中间件的过程中,难免会出现消息错误或者消息丢失等异常情况。这个时候就需要有一个良好的机制来跟踪记录消息的过程(轨迹溯源),帮助我们排查问题。 在RabbitMQ中可以使用Firehose实现消息的跟踪,Firehose可…

工业—使用Flink处理Kafka中的数据_ProduceRecord1

1 、 使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入Redis 中, key 值为

前端上传后端接收参数为null

记录一下工作中的问题 前端明明把文件传到后台了,但是后台接收参数为null 原因: 前端上传文件的name和后端接收参数名称不匹配 前端 后端 把前端上传的name由upfile改为file即可 本来是很基本的小问题,但因为自己钻了牛角尖一直没搞定&…

CSS3 布局样式及其应用

深入探讨 CSS3 布局样式及其应用 引言 在现代网页设计中,CSS(层叠样式表)不仅是设计视觉样式的工具,也是布局的核心技术。CSS3引入了新的布局模型,其中Flexbox与Grid布局在满足复杂布局需求方面表现尤为出色。本文将…

spark sql 环境安装,java 默认路径和 安装配置!

yum安装java 查看默认路径 update-alternatives --config java # Java 环境变量 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jreexport PATH$JAVA_HOME/bin:$PATH# Spark 环境变量 export SPARK_HOME/home/vagrant/soft/sparkexport PATH…

第32天:安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期

时间轴: 32天主要学习内容: 1、JavaEE-HTTP-Servlet技术 2、JavaEE-数据库-JDBC&Mybatis java技术使用历史(2023 ): JavaEE-HTTP-Servlet&路由&周期: java学习范围: 3、Java: 功能:数据…

Android渗透环境配置教程

工具 模拟器 ADB brew install android-platform-tools set import cert # cer 证书转为 pem 证书 openssl x509 -inform DER -in cacert.der -out cacert.pem# 获取证书的 hash 值 hash$(openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -n 1)# 将 pem…