svn版本控制方案:多分支并行开发,多环境自动部署
背景
keywords:svn,trunk,branch,jenkins,maven,merge
两地同时开发一个产品,目前线上有3个环境:测试环境、预发布环境、生产环境。目前系统部署采用jenkins自动化部署工具
用jenkins部署的方案
jenkins 测试环境:配置了各个分支的svn 地址;预发布和生产环境配置为主干的svn地址。jenkins部署的大致流程为:
- 根据配置的svn路径
- 下载源码
- maven打包
- copy到tomcat的webapps目录
- 重启tomcat
采取的版本控制方案如下图,虽然图看起来这么多弯弯曲曲的线,其实还是实施起来很简单的

两个原则
一:基于分支提测,预发布和生产基于主干进行发布
二:每次上线后,一定要及时通知其他分支及时从trunk merge到branch
war包部署方案
还有种部署方案:不基于源码打包部署,而是打一个war包,然后根据环境自动替换配置文件。这种部署方案比较适合分布式部署
这种版本控制可以有细微变动:就是第四点,发布到线上后,发现存在bug,那么是从tag新建分支,修复后,可以直接从分支打包上生产。因为如果用jenkins自动部署工具,那么就需要保证取源码的svn路径不能发生改变。
如下图:

转发请附带原文地址:http://www.cnblogs.com/sloong/p/5684997.html
svn版本控制方案:多分支并行开发,多环境自动部署的更多相关文章
- [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)
[.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...
- 简进祥-SVN版本控制方案:多分支并行开发,多环境自动部署
两地同时开发一个产品,目前线上有3个环境:测试环境.预发布环境.生产环境.目前系统部署采用jenkins自动化部署工具 用jenkins部署的方案 jenkins 测试环境:配置了各个分支的svn 地 ...
- Jenkins+Svn+Docker搭建持续集成环境 自动部署
一.准备工作: 两台服务器:192.168.206.212,192.168.206.213 自己新建一个maven项目 其中两台机子做下面的软件配置 212机子: 安装expect并配置: 安装jen ...
- SVN并行开发管理策略
总的原则:trunk保证相对稳定.分支合并到主干时将冲突降至最低. (1) trunk用于集成.测试.发布,可以提交fixbug代码,但不允许直接提交新特性. (2) 特性在分 ...
- 版本控制之五:SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤(转)
使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...
- idea 开发 webpack项目时,只要已加入SVN 版本控制 一直 updating 问题解决
场景描述,这是一个困扰我很久的一个问题,一直百度,都解决不了,今天自己通过设置终于解决了,慢慢的都是辛酸泪,赶快写个笔记记录一下. 对于idea 开发 vue-cli+webpack 项目,idea ...
- SVN版本控制说明与相关指令
SVN版本控制说明 目的 多个版本中并行开发,提高开发效率: 保证各个版本和各个环境(开发.测试.主干)的独立,避免相互影响: 通过分支与主干的合并,这样主干永远是最新.最高版本,并且都在后面的测试中 ...
- SVN 主干(trunk)、分支(branch )、标记(tag)
主干(trunk).分支(branch ).标记(tag) 在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的, ...
- SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...
随机推荐
- python中如何将str转换成dict
>>>user "{'a':'b'}" >>>b = eval(user) >>>b {'a':'b'}
- UESTC 882 冬马党 --状压DP
定义:dp[i][j]为状态为j时,第i行符合条件的状态数 转移方程:dp[i][j] += dp[i-1][t] //t为上一行状态,与当前行不冲突. 从第一行开始向下枚举,每次枚举当前行的状态 ...
- HDU 5105 Math Problem --数学,求导
官方题解: f(x)=|a∗x3+b∗x2+c∗x+d|, 求最大值.令g(x)=a∗x3+b∗x2+c∗x+d,f(x)的最大值即为g(x)的正最大值,或者是负最小值.a!=0时, g′(x)=3∗ ...
- UVA 11983 Weird Advertisement --线段树求矩形问题
题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和. 解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt] ...
- document.write和innerHTML的区别
document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open.每次写完关闭之后重新调用该函数,会导致页面被重写. innerHTML ...
- webBroser获取cookie
//取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...
- 静态时序分析(static timing analysis)
静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation).但STA只会去分析合适的时序,而不去管逻辑操作 ...
- 深入理解abstract class和interface(转)
原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口
- 搭建Apache+MySQL+PHP环境
1.1 搭建Apache+MySQL+PHP环境 1.1.1 关于安装前的准备 配置好yum源(/etc/yum.repos.d/)目录下,不会就去寻求运维支持. httpd-2.2.29.tar.g ...
- TCP之心跳包实现思路
说起网络应用编程,想到最多的就是聊天类的软件.当然,在这类软件中,一般都会有一个用户掉线检测功能.今天我们就通过使用自定义的HeartBeat方式来检测用户的掉线情况. 心跳包实现思路 我们采用的思路 ...