Git分支管理,运维知道吗?

news2024/12/23 8:26:56

需求

对于代码的管理,不知你是否遇到过以下几种情况:

  • 存在多种版本管理工具,如svn、git,无法做到代码统一管理;
  • 多人协作开发,代码合并冲突频发;
  • 分支管理混乱,存在很多个性化分支;
  • 提测代码被覆盖,严重影响开发进度;
  • 代码仓库多用户管理及权限管理混乱;
  • 等等

以上情况如果没有一个统一的代码仓库的管理规范,无论在测试阶段还是在生产上线过程中都将会是“一地鸡毛”。在此我们选择开源分布式版本控制系统Git作为代码仓库,并给大家介绍下已在企业生产实践中经过验证的Git分支管理规范。

环境介绍

代码版本在真正上生产环境前,需要经过一系列环境的测试验证:

  1. 开发环境,研发人员本地开发环境用于调试开发;
  2. 测试环境,研发人员进行系统联调测试;
  3. 封测环境,测试人员进行初步整体验收测试;
  4. 准生产环境,类生产环境,用于测试人员进行最终整体验收测试;

最终要上线的版本只有在经过测试人员的验收、评审后才可以交付到生产环境。

其中评审环节非常重要,需要测试、开发、运维对以下几方面做最终的确认:

  • 确定Git分支是否合并到Master,保证生产使用Master分支的代码;
  • 确定本次业务方需求涉及到的系统,以便有问题能够及时发现是否和本次变更有关;
  • 确定上线系统是否在各测试环境验证通过,对于验收不通过的版本禁止发布;
  • 确定上线系统发版顺序的前后依赖,避免因发布顺序导致的业务流转不通;
  • 确定配置文件是否提交或更新到配置中心;
  • 确定数据库相关DDL、DML是否需要DBA配合提前执行;
  • 确定系统版本号、版本发布时间及系统相关研发人员;
  • 等等其他细节;

经过评审后最终由运维按照版本发布时间进行上线,上线完成后由业务方进行验证。

Git分支管理

分支类型

为保证Git分支的有序使用,结合各环境的规划我们定义了以下分支:

  1. Master分支

    主分支,用于准生产环境发布,与生产环境保持一致;

  2. Hotfix分支

    补丁分支,用于生产环境上的版本进行Bug修复;

  3. Release分支

    发布分支,用于封测环境的整体验收测试;

  4. Feature分支

    功能分支,用于测试环境的功能联调测试;

其中,本地仓库并不是Git分支,而是基于远程Feature分支拉取到本地的开发仓库,用于开发环境的开发调试。

分支使用场景

  1. 功能开发
  • 当有新功能开发时,需要从Master分支clone到Feature分支;
  • 开发人员基于远程Feature分支拉取到本地的开发仓库,进行本地开发调试;
  • 当Bug分支有补丁修复时,需要首先将其合并到远程Feature分支,然后再合并到本地Feature仓库;
  1. Bug修复
  • 当线上版本有Bug时,需要基于Master分支clone到Hotfix分支;
  • 开发完成后需要将其合并到Master分支,并在准生产环境进行验收并发布;
  • 验收发布后需要将代码合并到Feature分支,然后再合并到本地Feature仓库,完成闭环;
  1. 测试环境发布
  • 将本地仓库的代码合并至远程Feature分支;
  • 打包发布,开发人员联调测试;
  1. 封测环境发布
  • 将Feature分支合并至Release分支;
  • 打包发布,测试人员初步整体功能联调测试;
  1. 准生产环境发布
  • 将Release分支合并至Master分支;
  • 打包发布,测试人员最终整体功能验收测试;
  1. 标签管理
  • Master代码验收通过,需要基于“版本号+日期”打标签并代表本次变更完成;
  1. Master分支锁定
  • Master分支只有在发版窗口前才可以提交合并,其他时间锁定,避免Master分支混乱;

以上场景需要注意的是,需要适时同步下远程分支的代码,否则很容易导致代码冲突。

多分支流水线

为保证各环境的系统版本的快速的CI/CD,我们一般会针对系统应用、环境、分支创建多个work,这无疑也会加大配置管理的难度。
因此我们可以使用Jenkins 扩展共享库和多分支流水线的功能,实现一个work对应多个环境、多个分支的需求,这无疑减少了一定的工作量,有兴趣的可以参考公众号内实践应用《CI/CD流水线》内的文章。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用工具类之spring-boot-devtools热部署

SpringBoot热部署 热部署不会用在生产环境,但对于程序员开发的效率,还是有一定帮助的,所谓的热部署,就是在应用程序在不停止的情况下,实现新的部署 spring-boot-devtools 是一个为开发者服务的一个模块,其中…

JAVA小区门户网站(源代码+论文)

小区门户网站之社区共享 摘 要 随着计算机的不断发展和广泛应用,人们的工作效率得到不断的提高。互联网的发展,更是缩短了人们之间的距离。如何充分利用互联网,这是大家共同关心的问题。本文主要介绍了关于小区门户网站之社区共享的实现方法…

【GD32F427开发板试用】IAR flash loader 下载GD32F427流程简要分析

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:andeyqi 很高兴获的社区的GD32F427开发板的评测机会,这几年芯片慌大家都能感受到,项目上经常因为货源紧张不断更换替代…

java面向对象 继承 多态

目录 继承性(inheritance) 为什么要有继承? 作用: 继承举例 方法的重写 重写举例 四种访问权限修饰符 关键字—super 关键字super举例 调用父类的构造器 调用父类构造器举例 子类对象的实例化过程 多态性 概念 使用 多态性应用举例 虚…

探花交友_第6章_圈子互动(新版)

探花交友_第6章_圈子互动(新版) 文章目录探花交友_第6章_圈子互动(新版)课程说明1. 动态查询1.1 查询好友动态1.1.1 接口文档1.1.2 代码步骤1.1.3 代码实现tanhua-app-server**MovementController****MovementService**tanhua-dub…

centos7磁盘挂载及目录扩容

centos7磁盘挂载及目录扩容1. Linux文件系统介绍1.1 ext21.2 ext41.3 xfs2. 查看磁盘现状2.1 查看硬盘情况2.2 查看磁盘挂载情况3. 磁盘挂载3.1 mount挂载3.2 通过UUID来进行挂载4. 目录扩容5. 参考资料项目申请的服务器资源,初始化阶段,运维人员未及时考…

ES 8.x 新特性:match_phrase 跨值查询中 position_increment_gap 参数用法

文章目录1、概述2、match_phrase 短语搜索3、跨值访问3.1 问题演示3.2 原因3.3 解决方案3.4 position_increment_gap 参数1、概述 在 ES 中进行短语搜索的时候,为了防止跨值访问,ES 会在每个值之间设置间隙,而这个间隙的默认大小为 100。而这…

【密码学篇】商用密码产品的密钥体系结构小结

【密码学篇】商用密码产品的密钥体系结构小结 商用密码产品的密钥体系结构笔记小结—【蘇小沐】 文章目录【密码学篇】商用密码产品的密钥体系结构小结1.商用密码产品密钥体系结构(一)服务器密码机密钥体系结构1.服务器密码机密钥体系结构2.服务器密码机…

MySQL 数据库 定义参数【连接查询】

目录 内连接查询(inner join) 左连接查询 left join 右连接 right join 全连接、合并查询 union 内连接查询(inner join) 关键字:inner join on 语句:select * from 表名 inner join 表名 on 条件…

Excel

单元格格式 ,跨列居中, 自动换行 尽量不要使用合并单元格,因为会使得一些单元格无法访问,影响排序,筛选等功能 第四季度销售数据部门类别十月十一月十二月肉类牛肉90000110000120000烘焙品甜点2500080000120000农产品…

基于JAVA的网络通讯系统设计与实现(论文+系统)

(2009届) 本科生毕业设计(论文) 基于Java的网络通信系统设计与实现 学 院、系:计算机与通信学院专 业:通信工程学 生 姓 名:班 级:学号指导教师姓名:职称最终评定成绩…

jest在已有项目中的安装与使用

简单的jest使用配置: npm init -y npm i jest24.8.0 -Dnpx jest --init 生成初始化配置 一个index文件,里面可以写入一些方法,作为测试这个jest.config.js是自动生成的!!!!! index.…

第二十五章《图书管理系统》第1节:图书管理系统简介

图书管理系统具有图书信息管理、读者信息管理和借阅信息管理三大功能模块,本小节将从软件功能、数据库系统设计和项目结构几个方面介绍该软件系统的设计方案。 25.1.1系统功能简介 图书管理系统第一大功能模块是图书信息管理,这个模块的软件界面如图25-1所示。 图25-1图书信…

2011-2019年全国30省绿色经济发展指数和子指数数据

2011-2019年全国30省绿色经济发展指数和子指数数据 1、时间:2011-2019年 2、来源:绿色发展指数BG——区域比较 3、范围:包括全国30个省份不包括西藏 4、指标包括:总指标—绿色化指数、经济增长绿化度指数、资源环境承载潜力指…

1.4 Apache Hadoop完全分布式集群搭建-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.4 Apache Hadoop 完全分布式集群搭建1.4.1 虚拟机环境准备1.4.2 集群规划1.4.3 安装Hadoop1.4.3.1 集群配置1.4.3.1.1 HDFS集群配置1.4.3.1.2 MapReduce集群配置1.4.3.1.3 Yarn集群配置1.4.3.2 分发配置1.4.4 启动集群1.4.4.1 单节点启动1.4.4.2 集群群起1.4.4.3 Had…

3D目标检测总结

3D目标检测最主要的应用领域是自动驾驶,主流用的传感器是camera和lidar, 一般车上也会配备很多radar, 但是在检测中一般很少用到radar。 除了特斯拉坚决不用lidar, 只基于纯视觉做自动驾驶感知, 大多数的自动驾驶感知…

Java---网络编程

特点:数据被限制在64kb以内,超出这个范围就不能发送了。 数据报(Datagram):网络传输的基本单位 。 TCP 传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收…

联邦学习论文分析1----联邦学习_功率分配_频带分配_传输速率_能耗

目录一、文章概述二、系统模型环境三、上行链路功率分配(UPA)算法1.系统目标2.约束条件3.公式推导(1)传输时间(2)系统能耗4.算法求解5.伪代码四、频带分配(BA)算法1.系统目标2.约束条件3.算法求解五、性能表征本文是对论文《Multi-Server Federated Edge Learning for Low Powe…

[附源码]JAVA毕业设计南京传媒学院门户网(系统+LW)

[附源码]JAVA毕业设计南京传媒学院门户网(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

【计算机网络】数据链路层:虚拟局域网

以太网包含的计算机太多时,带来问题: (1)广播风暴 一个以太网是一个广播域(广播域中任何一台设备发出的广播通信都能被该部分网络中的其他所有设备所接收) 在交换机的交换表的建立过程中要使用许多广播域…