SVN多分支开发模式V1.0.1
1目的
规范开发模式过程,指导项目研发、质控测试、DevOps的相关活动。
2适用范围
本规范的作用范围是为互联网软件产品相关项目开发模式的管理过程。
(1) 对项目团队中研发人员在开发模式过程中的活动、职责等方面进行了指导;
(2) 对项目团队中质控测试在开发模式过程中的活动、职责等方面进行了指导;
(3) 对项目团队中DevOps人员在开发模式过程中的活动、职责等方面进行了指导。
3角色及职责定义
(1) 项目研发:需求功能的实现者,分支开发、转测阶段由研发负责人驱动,交付质控提测邮件中需明确六要素:
项目名称、版本号、分支路径、脚本路径、部署手册、功能边界。
(2) 质控测试:为实现版本轮转高效,除日常测试活动外,
测试环境【合并主干并发布测试环境】、
预发布环境【主干测试通过发布预发布环境】、
生产环境【预发布环境验收通过,发布生产环境并完成版本归档等】
由质控团队统一负责服务。
(3) DevOps:持续交付工具研发和维护,负责版本交付周期过程中的发布支持。
4开发模式
包括单分支开发模式和多分支开发模式。下面分别阐述每种开发模式在项目过程中如何进行。
4.1开发模式
(1)单分支开发模式:确定基线、拉分支、合主干、项目发布、版本归档、持续交付。
(2)多分支开发模式:确定基线、拉(特性)分支、同步/回滚/合主干、项目发布、
版本归档、持续交付。
4.1.1单分支开发模式
4.1.1.0确定基线版本
SVN-Trunk:工程Demo – 》特性开发–》 稳定版本
4.1.1.1拉分支
分支来源于稳定主干,稳定主干均需符合以下条件:
(1) 版本已发布生产环境;
(2) 版本已完成版本归档。
4.1.1.2合主干
分支提测合主干
六要素:项目名称、版本号、分支路径、脚本路径、部署手册、功能边界。
4.1.1.3项目发布
4.1.1.3.1持续集成
随着软件项目复杂度的增加,对确保集成和软件组件一起工作的要求也就越来越高,因此要早集成,常集成。早集成、常集成,有助于在早期发现项目风险和质量问题,若到项目后期才发现这些问题,解决问题的代价会很大,将导致项目延期或者项目失败。

l Jenkins是将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(就是Jenkins的安装位置),进行编译、打包和发布到容器中。
在Jenkins的宿主服务器中必须要有可以进行:代码clone(Git)、代码编译(Maven)、代码运行(Tomcat)的基本环境
4.1.1.3.2持续部署
Udeployer是一套完整的持续交付生态系统,在交付过程的每一个步骤都是可视化、自动化的,可以带来包括效能在内的显著的好处,自动应用部署也改进了软件的总体质量。Udeployer集合了Jenkins、swarm、docker等工具,在跨网段、跨内外网等方面可以灵活配置。在整个版本交付生命周期(包括部署在内)推荐使用Udeployer,能够把人为的干预最小化、节省各环节等待时间,使得交付的流程更清晰化。一旦把人的干预去掉,质量就更加可预测,会变得更好。
其他自动化部署工具(Ansible、SaltStack)
4.1.1.4版本归档
版本管理是为满足不同需求,对同一产品或系统进行局部的改进和改型所产生的产品或系统系列的变更情况进行记录、跟踪、维护和控制的过程。
版本是记录特定对象各个可选状态的快照,版本管理的任务就是对对象的历史演变过程进行记录和维护,根据实际应用背景选择合适的版本间的拓扑结构,并至少应包括以下功能:(1)新版本的生成;统一、协调管理各个版本;
(2)有效记录不同版本的演变过程及对不同版本进行有效管理,以尽可能少的数据冗余记录各版本。
(3)保证不同版本在逻辑上的一致性和相对独立性,一个版本的产生和消失不会对其
余版本的内容产生影响。
(4) 版本切换时,指定了新的当前版本后,必须保证对象的映象和指定的版本保持一致。
4.1.1.5持续交付
4.1.1.5.1统一源码路径(保证测试环境、预发布环境、生产环境的源码一致性)
(1)分支:由归档后的主干创建,操作人员为项目研发,用于新需求功能实现。
(2)主干:由提测分支合并,操作人员为质控测试;用于功能测试、测试环境、预发布环境、生产环境的运行。
(3)Tag:预发布环境验收通过,发布生产环境并完成版本归档,操作人员质控测试,用于记录生产环境稳定版本,便于回滚主干操作。
4.1.1.5.2统一依赖关系(保证测试环境、预发布环境、生产环境的容器一致性)
(1) Swarm集群
l Swarm是一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。
l Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图:
图1
图2
(2) Docker仓库
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 其作为默认docker仓库,但在国内下载速度很慢。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
4.1.1.5.3自动化发布(源码交付和依赖关系交付,通过自动化交付实现)
同上“4.1.1.3项目发布”
4.1.2多分支开发模式
同步/回滚/合主干
4.1.2.1直接合并主干
提测版本号末位-1与当前主干版本号一致。
4.1.2.2先同步该主干,再合并主干
(1)提测版本号末位-1与当前主干版本号不一致;
(2)其他分支有归档记录,找到最近一次归档的版本号。
4.1.2.3先回滚上一版本,再合并主干
(1)提测版本号末位-1与当前主干版本号不一致;
(2)其他分支无归档记录;
(3)提测版本号末位-1在历史版本中存在 , 则需找到主干版本号末位-1的主干。
4.1.2.4先回滚分支对应主干,再合并主干
(1)提测版本号末位-1与当前主干版本号不一致;
(2)其他分支无归档记录;
(3)提测版本号末位-1在历史版本中不存在,则需找到对应的拉分支时主干。
SVN多分支开发模式V1.0.1的更多相关文章
- [苏飞开发助手V1.0测试版]官方教程与升级报告
[苏飞开发助手V1.0测试版]官方教程与升级报告导读部分----------------------------------------------------------------- ...
- WAFの基本防护透明流模式v1.0
一.WAFの透明流模式 1)首先先配置WAF的网络,配置一个网桥接口,设置IP便于带内管理. 2)当然,如果需要不同网段之间都能够管 ...
- 用SVN进行团队开发协作生命周期详解
目录 前言 面向人群 背景 解决方案 团队开发生命周期 创建新项目 创建分支 切换分支 合并代码 正式版本发布 bug修复 结束语 前言 查找了SVN的相关知识无论是园子里还是百度都只有一些理论,而有 ...
- 代码之间-论文修改助手v1.0版本发布
论文查重,是每个毕业生都要面临的一个令人头疼的问题,如果写论文不认真,很可能导致查重红一大片. 之前有帮助一些朋友修改论文降低重复率,做了一些工作后发现,国内的查重机构,如知网.维普等,大多数是基于关 ...
- [svn] 分支开发
参考博客: http://www.cnblogs.com/cxd4321/archive/2012/07/12/2588110.html (1)为什么要使用SVN分支开发和主干合并? 目的:在SVN下 ...
- [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)
[.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...
- Rookey.Frame v1.0快速开发平台-整体介绍
Rookey.Frame v1.0是一套基于.NET MVC的极速开发框架,支持简单逻辑模块零代码编程.支持二次开发,具有高扩展性.高复用性.高伸缩性. 框架特点 (1)简单逻辑模块实现零代码编程,通 ...
- Farseer.net轻量级ORM开源框架 V1.0 开发目标
本篇主要给大家说明下在V1.0中,计划开发的任务的状态.按照国际惯例.上大表格 开发计划状态 编号 模块 状态 说明 1 分离Utils.Extend.UI √ 在V0.2版本中,是集成在一个项 ...
- 安卓开发开发规范手册V1.0
安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出 ...
随机推荐
- Linux 线程编程3.0
#include <pthread.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h& ...
- .net core mvc发布项目到IIS上出现500错误
如题,我把.net core mvc项目以应用程序方式挂到IIS默认网站下,结果出现了如下错误:HTTP Error 500.0 - ANCM In-Process Handler Load Fail ...
- Lerning Entity Framework 6 ------ Complex types
Complex types are classes that map to a subset of columns of a table.They don't contains key. They a ...
- Java字符串池(String Pool)深度解析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存 ...
- Python队列及在微信机器人中的应用
本文来源于i春秋学院,未经允许严禁转载. 最近打算更新微信机器人,发现机器人的作者将代码改进了很多,但去掉了sqlite数据库,需要自己根据需求设计数据库,跟作者沟通得到的建议是为了防止消息并发导致数 ...
- WebView 错误码整理
在使用WebView中,我们不可避免的会接触到WebView加载失败的异常处理的需求,这时候,需要我们监听失败的方法也就是onReceivedError方法: public class CustomW ...
- Go语言常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量. 常量中的数据类型只能是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: //const 常量名 类型 值 const id ...
- 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...
- H5拖动火狐自动打开新标签
写在前面的话:<H5拖动火狐自动打开新标签>原因是为什么百度很多了我就不细说,本文章只说我自己的解决方法... 自定义数据里写个链接,如果火狐自动打开就跳到这个链接 这个页面就写一句话:关 ...
- JSTL-简介
JSTL全称为 JSP Standard Tag Library 即JSP标准标签库. JSTL作为最基本的标签库,提供了一系列的JSP标签,实现了基本的功能:集合的遍历.数据的输出.字符串的处理.数 ...