系列文章整理 - “听”乔梁讲述持续集成的故事

2023-11-03 22:31

本文主要是介绍系列文章整理 - “听”乔梁讲述持续集成的故事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

乔梁,十多年软件开发及项目管理经验,专注于提高软件企业提高交付能力,推广最佳实践。曾为多个大型电信企业、互联网企业提供专业的软件交付咨询服务。现任百度项目管理部高级架构师,负责百度敏捷过程改进与持续交付推广实施。译有《持续交付》。曾任Thoughtworks资深咨询师,对敏捷项目管理及持续集成有深入的理解与丰富的实践经验。

下面是整理出来的乔梁分享的“持续集成”系列文章:

持续集成之戏说Check-in Dance

每当开发人员提交代码时,就是其与其他开发人员工作成果的一次集成。如果每个人都能够频繁提交代码,那么代码集成的频率就会提高,在持续集成的有力支持下,代码中潜在的问题就会更早地暴露出来,以便团队尽早解决之。当然,持续集成所鼓励的频繁提交并不是指那种仅将版本控制库当成备份工具,无约束的“随意”提交,还需要团队开发流程约束的。下面我们来一同探讨“持续集成环境中的团队开发流程是什么样的”。

 

持续集成之“测试三角形与分段构建策略原则”

随着软件产品新特性的不断增加,软件自动化测试用例的数量也会成倍增长。对于一些历史“悠久”的遗留系统来说,甚至会积累数以万计的自动化测试用例。如果对这样的系统进行持续集成,还要求每个开发人员都要进行本地验证的话,困难的确不小。让我们还是看看Joe的团队是如何解决类似问题的吧。

 

持续集成之“分支策略”

现代版本控制系统(SCM)的作用已不仅仅是保存历史版本,它还是各软件开发组织利用其分支功能实现多人并行开发,提高生产效率的一种工具。对于稍有历史的软件产品来说,一般都会有代码分支的出现,也常常见到一些历史悠久的产品其错综复杂的分支版本树甚至将产品交付团队拖入“无尽维护”的泥潭。分支的目的是希望“分而治之”,而持续集成的目的是“频繁集成”,这二者之间又有哪些联系呢?

 

持续集成之“分支策略”(续)

现在,Joe的团队中,开发人员快速增加,已接近30人了。由于首次发布后的市场压力,大家一直在赶进度,持续集成的失败频率越来越高,修复构建的时间也越来越长,排队等待提交的代码也越积越多。“这种状况不能再持续下去了,需要想个办法解决它。”

 

持续集成之“依赖管理”

在前文《分支策略(续)》中,我们讨论了多组件应用程序的持续集成策略,即:为相对独立的组件创建自己专属的代码库,然后通过现代持续集成工具进行组件间的持续集成。Joe的团队在首次发布之后,开始使用这种方式。然而,没有多久,他们就遇到了一个问题:一次提交构建所花费的时间太长。

 

持续集成之“自动化部署”

将部署操作脚本化,并进行部署验证测试;各类环境尽可能相似,并使部署脚本通用化;对环境管理进行版本控制,杜绝对生产环境的手工直接修改。

 

持续集成之“软件自我识别”

你是否遇到过这样的情形,即使手里拿着一个jar文件或dll文件,也无法知道它到底是哪个版本。也许你可能认为,这算不了什么,到某个管理平台上查一查部署记录就行了。可是,如果发现在生产环境的集群服务器上,不同机器上部署的同一个程序文件(比如.war文件)的大小却不相同,哪一个的大小是正确的呢?

 

持续集成之“Everything is code” 

随着互联网的飞速发展,以及基础设施的改进,越来越多的业务被放在了“云”端。管理数千台服务器和各种应用程序的不同版本已经是一种常规事务了。那么如果管理好这些机器和代码吗?本文将介绍一些最佳实践,来帮助大家更好的完成相关的事务。

转载于:https://www.cnblogs.com/cmt/archive/2012/01/07/continuous_integration.html

这篇关于系列文章整理 - “听”乔梁讲述持续集成的故事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341309

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring