Git分支管理,运维知道吗?
创始人
2024-03-20 17:17:06
0

需求

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

  • 存在多种版本管理工具,如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流水线》内的文章。
在这里插入图片描述

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...