Git源代码管理方案

  1. 背景

现阶段的Git源代码管理上有一些漏洞,导致在每次上线发布的时间长、出问题,对整体产品的进度有一定的影响。

  1. 作用

新的Git源代码管理方案有以下作用:

  1. 多功能并行开发时,测试人员可以根据需求任务分配测试自己的功能,环境互不干扰(需要提供多环境),也可以集成全业务流程测试;
  2. 功能并且支持拆分上线;
  3. 所有代码冲突必须在版本环境解决
  4. 原则上V1环境打包好的版本测试通过直接推给beta环境测试,beta环境测试通过直接推到生产环境(灰度环境),如果有拆分上线,再由各功能分支合并到版本环境从新打tag提测。
  1. 权限
  1. 版本环境开放给开发人员(包括组长、项目经理);
  2. master环境只开放给源代码管理员(业务线技术负责人)。
  1. 角色

本流程涉及到的角色有以下:

  1. 开发人员:主要负责功能开发,发送功能测试合代码请求,填写封版内容,提交脚本,解决合并代码冲突,协助解决部署问题;
  2. 组长(项目经理):主要负责创建测试封版请求(运维管理平台),督促开发人员合并代码,检查封版内容是否准确;
  3. 测试人员:主要负责功能、性能测试,根据开发人员提供的版本tag打包测试,测试通过后通知运维tag分支名称与测试通过的程序包。
  4. 运维人员:主要负责生产程序部署(根据测试通过的程序包),master打制品库,生产部署过程中出现问题的程序回滚。
  5. 源代码管理员:主要负责master源代码合并(根据测试通过的版本分支tag),打master的release。
  1. 流程
    1. 功能分支
  1. 开发人员从master获取生成功能分支;
  2. 功能分支线命名规范:服务名称+“-”+版本号。
    1. 版本提测(图1)
  3. 项目经理(委托人)从master获取生成V1版本分支,分支线命名规范:服务名称+“-”+版本号;
  4. 开发人员把需要提测功能分支发送合并代码请求通知组长(委托人)组长(委托人)合并代码生成版本tag并通知测试人员;
  5. 项目经理(委托人)创建测试封版请求运维管理平台,由各个开发人员填写内容;
  6. 开发人员把需要的脚本提交到运维管理平台版封表格,格式以SQL审计规范》https://archery.bndxqc.com/dbaprinciples/;
  7. 测试人员基于开发人员提供的tag编译打包测试;
  8. 测试完,测试人员给出最终版本tag;
  9. tag命名规范:服务名称+“-”+版本号+“-”+时间(yyyymmddhhmmss);

如:bonade-officialcar-oil-V4.2.0-20210324121145

  1. Fix bug重复上述内容,注意:如果在测试期间,生产有发生bug修复后,需要从新拉取master与现有的版本内容合一次再打tag 。
    1. 体验上线(图1)
  1. 如果测试通过的版本tag是整体都上体验,就直接拿版本tag打的包推到体验环境,以下步骤不需要执行;
  2. 如果测试通过的版本tag是部分上体验,需要在版本环境从新构建,打tag再上测试环境->体验环境;
  3. Fix bug重复上述内容。

    1. 生产上线(图1)
  1. 体验测试通过直接推送到生产线(包括灰度),原则上测试与体验是同一个包;
  2. 生产环境通过后,由源代码管理员最终通过的版本tag对应的源代码合到master,如果发现冲突项目经理安排开发人员解决;
  3. 生产环境通过后,由源代码管理员打一个生产版本tag(v1.0.0-release)。

    1. Fix Bug上线(图2)
  1. 开发人员从master拉取代码生成功能分支进行修复;
  2. 重复<版本提测>流程。

图1

图2

图3

  1. 配置规范
    1. 前端
  1. 由于存在多个环境(开发,测试,体验,生产),而又使用同一个tag发布代码,故前端代码中不应该写死接口请求域名(如写死BaseUrl:薪公务用车);
  2. 若项目中有写死跨子域名的请求,则需要在代码中判断当前环境,再请求对应环境的域名;

    1. 后端
  1. 配置文件统一放在nacos配置中心;
  2. 启动配置中心的环境,通过启动脚本注入,需要运维配合实施;
  3. 前端需要用到的域名,由运维统一配置然后提供给开发人员(包含APP、前端、后端);
  4. 前端用到的路由,如果是再网关层配置,如gateway,zuul配置的由后端人员配置,如果是nginx的由后端人员提供配置给运维协助配置。
    1. 运维
  1. 域名,nginx,启动脚本由运维人员配置。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java基础教程】(十三)面向对象篇 · 第七讲:继承性详解——继承概念及其限制,方法覆写和属性覆盖,关键字super的魔力~

Java基础教程之面向对象 第七讲 本节学习目标1️⃣ 继承性1.1 继承的限制 2️⃣ 覆写2.1 方法的覆写2.2 属性的覆盖2.3 关键字 this与 super的区别 3️⃣ 继承案例3.1 开发数组的父类3.2 开发排序类3.3 开发反转类 &#x1f33e; 总结 本节学习目标 掌握继承性的主要作用、实…

人工智能自然语言处理:N-gram和TF-IDF模型详解

人工智能自然语言处理&#xff1a;N-gram和TF-IDF模型详解 1.N-gram 模型 N-Gram 是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为 N 的滑动窗口操作&#xff0c;形成了长度是 N 的字节片段序列。 每一个字节片段称为 gram&#xff0c;对所…

Spring底层

配置文件 配置优先级 之前讲解过&#xff0c;可以用这三种方式进行配置 那如果这三种都进行了配置&#xff0c;那到底哪一份生效呢&#xff1f; 结论 优先级从大到小 properties>yml>yaml然后就是现在一般都用yml文件进行配置 其他配置方式 除了配置文件外 还有不同…

【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序的几种方式 一、使用Collections工具类 1、对基本类型排序 通过Collections.sort()对基本类型排序默认是以升序排序 // 1.Collections.sort()默认按照升序排序 List<Integer> integerList new ArrayList<>(); Collections.addAll(…

N天爆肝数据库——MySQL(5)

本文主要对索引进行了讲解 这里写目录标题 本文主要对索引进行了讲解索引概述介绍优缺点索引结构二叉树红黑树B-Tree(多路平衡查找树)BTreeBTree与B-Tree区别: HashHash索引特点 为什么InnoDB存储引擎选择使用BTree索引结构&#xff1f;索引分类在InnoDB存储引擎中&#xff0c;…

KUKA机械臂的导纳控制

KUKA机械臂的导纳控制 在近期的实验中&#xff0c;需要根据传感器的给出的实时位置信息进行导纳控制&#xff0c;并实时改变导纳控制的参数。由于KUKA自带的实时导纳控制模型无法实时修改参数&#xff0c;因此尝试了自己实现导纳控制。网上这方面的资料比较少&#xff0c;整理…

Notepad++ 配置python虚拟环境(Anaconda)

Notepad配置python运行环境步骤&#xff1a; 打开Notepad ->”运行”菜单->”运行”按钮在弹出的窗口内输入以下命令&#xff1a; 我的conda中存在虚拟环境 (1) base (2) pytorch_gpu 添加base环境至Notepad中 cmd /k chdir /d $(CURRENT_DIRECTORY) & call cond…

Redis相关配置(3)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ 文章目录 Redis相关配置1、units2、Include3、loadmodule 加载模块4、NET…

[ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择

前几天看到一个问答帖&#xff0c;我回答完了才发现这个帖子居然是去年的也没人回复&#xff0c;其中他问了一些华为云的问题&#xff0c;对于其中的一些概念&#xff0c;这里来总结讲解一下&#xff0c;希望对学习华为云的小伙伴有所帮助。 文章目录 区域&#xff08;Region&a…

three.js学习

前言&#xff1a; three.js基本使用没问下&#xff0c;下面进入自定义图形 效果展示 实现 使用BufferGeometry()自定义 <script setup lang"ts"> import { ref, onMounted } from vue import * as THREE from three // 导入轨道控制器 import { OrbitContro…

概率论的学习和整理--番外12:一个经典dubo模型的概率计算等

目录 1 经典模型知识科普 1.1 知识来源 1.2 下面是摘取的部分规则 2 这个经典dubo的概率和期望 2.1 网上计算的概率&#xff0c;期望全是负&#xff0c;赌徒悲剧 2.2 为什么会这样呢 3 假设把下注庄家不抽水&#xff0c;获得100%收益而不是95&#xff0c;多少次后可以赢…

leetcode 965.单值二叉树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;单值二叉树 思路&#xff1a; 让当前的根节点与左孩子节点与右孩子节点判断&#xff0c;若相等则继续向下分治&#xff0c;让左孩子与右孩子当作新的根节点继续判断&#xff0c;直到某个节点不相等。 1️⃣ 代码&#x…