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的更多相关文章

  1. [苏飞开发助手V1.0测试版]官方教程与升级报告

           [苏飞开发助手V1.0测试版]官方教程与升级报告导读部分----------------------------------------------------------------- ...

  2. WAFの基本防护透明流模式v1.0

                      一.WAFの透明流模式     1)首先先配置WAF的网络,配置一个网桥接口,设置IP便于带内管理.             2)当然,如果需要不同网段之间都能够管 ...

  3. 用SVN进行团队开发协作生命周期详解

    目录 前言 面向人群 背景 解决方案 团队开发生命周期 创建新项目 创建分支 切换分支 合并代码 正式版本发布 bug修复 结束语 前言 查找了SVN的相关知识无论是园子里还是百度都只有一些理论,而有 ...

  4. 代码之间-论文修改助手v1.0版本发布

    论文查重,是每个毕业生都要面临的一个令人头疼的问题,如果写论文不认真,很可能导致查重红一大片. 之前有帮助一些朋友修改论文降低重复率,做了一些工作后发现,国内的查重机构,如知网.维普等,大多数是基于关 ...

  5. [svn] 分支开发

    参考博客: http://www.cnblogs.com/cxd4321/archive/2012/07/12/2588110.html (1)为什么要使用SVN分支开发和主干合并? 目的:在SVN下 ...

  6. [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)

    [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...

  7. Rookey.Frame v1.0快速开发平台-整体介绍

    Rookey.Frame v1.0是一套基于.NET MVC的极速开发框架,支持简单逻辑模块零代码编程.支持二次开发,具有高扩展性.高复用性.高伸缩性. 框架特点 (1)简单逻辑模块实现零代码编程,通 ...

  8. Farseer.net轻量级ORM开源框架 V1.0 开发目标

    本篇主要给大家说明下在V1.0中,计划开发的任务的状态.按照国际惯例.上大表格 开发计划状态 编号 模块 状态 说明 1  分离Utils.Extend.UI  √  在V0.2版本中,是集成在一个项 ...

  9. 安卓开发开发规范手册V1.0

    安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出 ...

随机推荐

  1. Build.gradle的详细配置说明

    转自:http://blog.csdn.net/u012246458/article/details/51722624 apply plugin: 'com.android.application'/ ...

  2. Android-Java-构造方法内存图

    描述Dog对象: package android.java.oop07; // 描述Dog对象/实体 public class Dog { private String name; private i ...

  3. Visual Studio 2015 将json转换为实体类

    最新写的一个接口需要接收json参数,然后序列化为实体类然后再进行后面的逻辑处理.因为json中键值对比较多,逐一去手写实体中的每个属性太麻烦,于是寻思是否有这样的工具可以将json转换为实体类. 经 ...

  4. HTTP 协议基础概念和报文结构

    基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...

  5. weblogic安装及配置

    WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的Java应用服务器. 1.安装Weblogic:(1)点击Next按钮:(2) 选择Custom后点击Next按 ...

  6. spring框架学习笔记1:搭建测试

    Spring框架介绍: Spring框架涵盖了web.service.dao三层,本身是一个存放对象的容器 形象来说:Spring是项目中对象管家 Spring框架的两大核心思想:控制反转(IOC). ...

  7. C语言中几个常用数学计算函数ceil(), floor(), round()的用法

    最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...

  8. python绘图工具matplotlib在linux下安装和使用

    工具介绍:matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy.它为利用通用的图形用户界面工具包, 如Tkinter, wxPython, Qt或GTK+向应用程序嵌入 ...

  9. iOS-实现后台长时间运行

    前言 一般APP在按下Home键被挂起后,这时APP的 backgroundTimeRemaining 也就是后台运行时间大约只有3分钟,如果在退出APP后,过十几二十二分钟或者更长时间再回到APP, ...

  10. “大话架构”阿里架构师分享Java程序员需要突破的技术要点

    一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...