`
ronghao
  • 浏览: 458145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8834
社区版块
存档分类
最新评论

(Multi-stage Continuous Integration)多阶段持续集成

阅读更多
一、目前的情况
目前我们要进行持续集成的对象是一个有着100人左右的开发团队,他们开发着一套很庞大的系统。整个开发团队划分为多个开发小组进行协同开发,每个开发小组负责2-3个模块的开发,实际这里的模块已经相当于一个中小型系统。
各模块所有的类都通过eclipse整体编译在一起,直接放置在WEB-INF/classes下。本地是无法启动整个系统的,需要耗费大量的资源。

二、碰到的问题
在了解具体情况之前,我们最初的想法是为整个产品做一个持续集成,但是很快就发现这一想法存在很多的问题:
1、整个产品每次构建的时间会很长,这个时间包括代码的编译、启动Weblogic,完成自动化测试,同时对服务器的硬件要求非常高
2、因为构建时间长,所以如果本地构建通过后再提交会严重影响开发效率,况且本地的硬件条件很可能启动不了
3、如果本地不构建提交,则由于开发人数众多,构建会非常不稳定,会经常处于失败状态。而构建失败会导致后续提交的阻塞。
4、作为一个100人的开发团队,代码提交会引发频繁的服务器构建,服务器无法负担。

同时作为客户,他们有这样一种想法:敏捷开发是好的,但是不适合于大的项目和大的团队。

最重要的问题集中在两个方面:
1、启动整个产品过于重量级(不包括自动化测试的情况下已经如此)
2、如何不影响开发人员的频繁提交

三、我们的想法
我们现在的想法是做多阶段的持续集成(multi-stage CI)

具体而言:
1、各个开发小组内做小组内的持续集成
2、开发小组间集成做整个产品的持续集成

可以参考这里http://www.ddj.com/development-tools/212201506
大概:
1、每个开发小组一个分支,整个产品一条主线
2、在小组分支上搭建持续集成环境,小组内的开发向该分支上提交,各个小组可以并发开发,互不影响
3、小组完成一个完整的功能后,从主线更新合并代码,本地构建通过,提交,触发整个产品的持续集成

为使小组内持续集成构建加快,小组内尽量划分清楚对其他模块的依赖,不必要的模块(这里的模块包括基础模块,例如工作流模块)不必加载。

同时推荐轻量级的web服务器例如Tomcat来完成小组内的测试环境。需要启动weblogic的情况或功能依赖过多的情况下,建议在产品持续集成时进行测试。

同时保留原有的启动单独测试服务器进行手工测试的习惯。
  • 大小: 31.1 KB
分享到:
评论

相关推荐

    开源项目-itwars-Docker-multi-stage-build#an-example-of-docker-multi-stage-building-with-golang.zip

    开源项目-itwars-Docker-multi-stage-build#an-example-of-docker-multi-stage-building-with-golang.zip,An example of Docker multi-stage building with Golang

    3_Multi-stage Amplifier_BJT+MOSFET_design_circuit_

    6. **文件"3_Multi-stage Amplifier_BJT+MOSFET"**: 这个文件很可能是详细的设计图纸、仿真结果或理论计算,涵盖了BJT和MOSFET多级放大器的具体电路配置、参数选择以及性能评估。通过研究这些内容,我们可以更深入...

    开源项目-itwars-Docker-multi-stage-build.zip

    开源项目-itwars-Docker-multi-stage-build.zip,An example of Docker multi-stage building with Golang

    A Multi-stage Probabilistic Algorithm for Dynamic Path-Planning

    标题与描述均提到了一种多阶段概率算法在动态路径规划中的应用,这表明文章的核心是介绍并探讨一种结合了概率抽样方法与快速探索随机树(RRT)的新型算法,旨在解决高度动态环境下的路径规划问题。标签进一步强调了...

    03_MICROSAR_Multi-core_Integration.pdf

    03_MICROSAR_Multi-core_Integration

    Optimal multi-level thresholding using a two-stage Otsu optimization approach

    However, this method becomes very time-consuming when extended to a multi-level threshold problem due to the fact that a large number of iterations are required for computing the cumulative ...

    Dockerfile中multi-stage(多阶段构建)详解

    在2017年5月3日即将发行的 Docker 17.05.0-ce 中,Docker 官方提供了简便的多阶段构建 (multi-stage build) 方案,下面这篇文章主要给大家介绍了关于Dockerfile中multi-stage(多阶段构建)的相关资料,需要的朋友可以...

    multi-stage-sourcemap:多级源地图处理库

    多阶段源地图 该库为多级源映射提供重新映射功能。 安装 npm install multi-stage-sourcemap 概念 基本SourceMap 众所周知的基本sourcemap没问题。 多级SourceMap 多级SourceMap有问题。 不提供将Minified Code...

    Multi-layer AHB

    Multi-layer AHB(多层高级微控制器总线架构)是一种基于AHB(Advanced High-performance Bus)协议的互连方案,它支持多个主设备与从设备之间的并行访问路径。这种设计旨在提高系统性能、减少延迟并增加带宽,特别...

    讲稿_Robust Multi-Modality Multi-Object Tracking.docx

    这篇讲稿是关于2019年的一篇计算机视觉(CV)领域的论文,主题是“鲁棒多模态多目标跟踪(Robust Multi-Modality Multi-Object Tracking, MMOT)”。多模态多目标跟踪(MOT)旨在在一个场景中同时追踪来自不同传感器(如...

    obs-multi-rtmp_Windows_0.2.5.zip

    **OBS多路推流插件obs-multi-rtmp详解** OBS(Open Broadcaster Software)是一款开源且免费的屏幕捕捉与实时视频流媒体软件,广泛应用于直播、录制和视频编辑等领域。在OBS中,"obs-multi-rtmp"是一款重要的插件,...

Global site tag (gtag.js) - Google Analytics