另一个关于持续集成和版本分支的故事

经典书籍《持续交付》[1]的作者曾就分支合并和代码演化等问题详细地讨论 过滥用分支对持续集成的负面影响。而我今天要说的是这样一个故事,一个只能 申请到非常有限的硬件设备的团队,他们是如何在多分支策略下实践持续集成的 。

一个团队接手了一个项目,需要在开发新特性的同时维护几个发布分支。团队 计划实践持续集成,但手头的硬件资源严重不足,无法满足所有分支的部署流水 线同时运转。

流水线分为三个阶段,分别是:

commit 编译、单元测试和部分集成测试并打包

at 部署应用程序并运行自动化验收测试

uat 部署应用程序并由测试工程师执行手工验收测试

这里我们略去了性能测试阶段和发布阶段,它们一般需要额外安排硬件设备, 与这个故事关系不大。流水线的每一个阶段都可能依赖于某些外部服务,比如Web 容器、数据库等。为防止不必要的干扰,每个阶段通常会尽可能地使用专用的外 部服务,测试工程师在uat阶段做手工测试时可不喜欢Web容器由于at阶段被触发 而被重启。

长生命周期的分支同主干一样也需要部署流水线,也就需要更多的外部服务。 如果主干的at阶段依赖于数据库,那么某个发布分支的at阶段也同样需要依赖于 数据库。而通常你得为它们准备不同的数据库实例以防互相干扰。外部服务的安 装和运行是需要硬件资源的,在资源拮据时,分支无疑加剧了这个问题。由于一 些特殊情况,在好几个项目中我们只申请到了一台破旧的PC server作为团队的测 试设备。但我们并不打算因此放弃持续集成,所以让我们看看能不能在螺蛳壳里 做道场吧。

时间: 2025-01-20 17:50:46

另一个关于持续集成和版本分支的故事的相关文章

想知道一个互联网项目如何实现持续集成吗?(含视频)

想要了解一个互联网项目如何实现持续集成吗?想要知道持续集成过程中需要经历哪些阶段吗?想要明白开发测试同学如何配合工作吗?阿里巴巴持续集成持续交付平台--云效,将为大家呈现由真人配音.全程视频演示的项目的一生.精彩不容错过! 视频演示: 云效官网视频链接:(进入页面后选择左侧帮助视频栏--云效研发整体流程视频) http://ali-aegis.aliyun.com/help/help.html?spm=0.0.0.0.W35KAx  视频解读: 项目准备阶段:我们评审好项目需求,初步完成项目的资

持续集成工具之Hudson

一.什么是持续集成 持续集成的核心概念 CI 过程会经常构建软件组件:在许多情况下,每当源代码存储库(比如 Subversion 或 ClearCase)中的代码发生变化时,都要构建软件组件.CI 的好处是:经常构建软件可以确保尽早遇到问题(比如代码缺陷),避免问题在软件开发周期晚期变复杂时才被发现. 工具与过程 尽管 CI 实际上是一个过程,但是持续集成 这个词常常与一个或多个工具相关联.在本教程中,讲解如何安装.配置和使用 Hudson 作为 CI 服务器,但是要记住,CI 远不只是个工具.

使用Jenkins、Docker和Ansible进行持续集成和交付

本文讲的是使用Jenkins.Docker和Ansible进行持续集成和交付,[编者的话]本文介绍了使用Docker.Jenkins等技术实现应用开发,测试到部署的自动化.它是一种探索.重点在于流程中的代码检测.测试.部署.部署后要做的事情没有涉及.会在后面文章中介绍. 本文试图为您介绍一个设置持续集成.交付.部署工作流的可行方式.我会使用Jenkins.Docker.Ansible和Vagrant来设置(配置)两个服务器.一个作为Jenkins的服务器,另一个用来模拟生产环境.前者用来检查代码

基于Docker的开发模式驱动持续集成落地实施

11月30日,资深质量优化专家陈能技老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的开发模式驱动持续集成落地实施"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢陈能技老师对DBA+社群给予的大力支持.    嘉宾简介   资深质量优化专家,12年软件测试与质量管理经验 <软件性能测试诊断分析与优化>等多本IT畅销书作者 演讲实录   今天主要交流的主题是基于Docker的开发模式如何驱动持续集成落地实施,这里会涉及两个主要的

微服务的持续集成,四步“构建”一个代码世界

本文讲的是微服务的持续集成,四步"构建"一个代码世界,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误. 今天我们就来聊一聊微服务的持续集成. 目录 一.持续集成之构建 二.持续集成之部署 三.持续集成之测试 四.持续集成之发布 五.总结 一.持续集成之构建 当微服务产生

CRP中多分支持续集成的配置

在上一篇发布与分支中,我们讨论了几种经典的发布模式.如果你最终选择在发布中使用分支,那么就来看看CRP中对多分支持续集成的支持吧. 假设你有dev和hotfix两个分支,主要功能都在dev分支上开发,而对于线上的紧急bug,则走hotfix分支进行修复. 针对dev分支的持续交付线 先看一个针对dev分支的发布线配置: 触发器的配置: 单元测试stage的配置: 集成测试stage的配置: 发布stage的配置: 把hotfix也加进来 1.把第一个单元测试的stage拆分成两个: dev分支更

Android项目持续集成实践之Gitlab CI(Docker版本)

接上一篇 Android项目持续集成实践之Gitlab CI. 在我看来,.gitlab-ci.yml 配置还是有些复杂,写的脚本还是有点多,有没有办法更精简一点呢? 有,那就是Android环境Docker化.(注:对Docker感兴趣的同学,请参考这本书<Docker -- 从入门到实践>). 我在这本书的指导下封装了一个包含Android开发环境的Docker镜像. 1. https://github.com/snowdream/docker-android 1. https://hub

什么是持续集成?持续交付?持续部署?

作者: 阮一峰 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI). 本文简要介绍持续集成的概念和做法. 一.概念 持续集成指的是,频繁地(一天多次)将代码集成到主干. 它的好处主要有两个. (1)快速发现错误.每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易. (2)防止分支大幅偏离主干.如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成. 持续集成的目的,就是让产品可

为什么我们迫切需要持续集成?

本文讲的是为什么我们迫切需要持续集成?[编者的话]持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础.本文论述了当前软件开发过程中存在的问题,讲解了持续集成.持续集成服务器的概念,最终探讨了为什么我们需要持续集成来解决这些问题. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览:持续集成系统介绍:客户端与服务端的 CI/C