Git的原理和使用(六)

        本文主要讲解企业级开发模型

1. 引入

        交付软件的流程:开发->测试->发布上线

        上面三个过程可以详细划分为一下过程:规划、编码、构建、测试、发 布、部署和维护

        最初,程序⽐较简单,⼯作量不⼤,程序员⼀个⼈可以完成所有阶段的⼯作。但随着软件产业的⽇益 发展壮⼤,软件的规模也在逐渐变得庞⼤。软件的复杂度不断攀升,⼀个⼈已经hold不住了,就开始 出现了精细化分⼯。如下图所⽰:

        但在传统的 IT 组织下,开发团队(Dev)和运维团队(Ops)之间诉求不同:

        • 开发团队(尤其是敏捷团队)追求变化

         • 运维团队追求稳定

        双⽅往往存在利益的冲突。⽐如,精益和敏捷的团队把持续交付作为⽬标,⽽运维团队则为了线上的 稳定⽽强调变更控制。部⻔墙由此建⽴起来,这当然不利于 IT 价值的最⼤化 ;

        为了弥合开发和运维之间的鸿沟,需要在⽂化、⼯具和实践⽅⾯的系列变⾰⸺DevOps正式登上舞 台。

        DevOps(Development和Operations的组合词)是⼀种重视“软件开发⼈员(Dev)”和“IT运维技 术⼈员(Ops)”之间沟通合作的⽂化、运动或惯例。透过⾃动化“软件交付”和“架构变更”的流 程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。在DevOps的软件开发过程包含计 划、编码、构建、测试、预发布、发布、运维、监控,由此可⻅DevOps的强⼤。

2. 系统开发环境

2.1 引入

        用户访问各种网页或者app,其实都是在访问部署的服务器(这些服务器上部署的都是稳定的代码),但是我们开发的代码不能直接放在这些服务器上;

        所以给开发人员开发专属于开发人员的服务器,这些服务器中只部署正在开发的代码,由此我们就会有环境隔离;

如下图所示:

        由上图所示,就有了发布环境和开发环境;

2.2 环境的分类

        对于开发⼈员来说,在系统开发过程中最常⽤的⼏个环境必须要了解⼀下:

        1. 开发环境:开发环境是程序猿们专⻔⽤于⽇常开发的服务器。为了开发调试⽅便,⼀般打开全部错 误报告和测试⼯具,是最基础的环境。

        2. 测试环境:⼀个程序在测试环境⼯作不正常,那么肯定不能把它发布到⽣产机上。该环境是开发环 境到⽣产环境的过渡环境。

         3. 预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测⽽设⽴的⼀套环境。 其配置等基本和⽣产环境⼀致,⽬的是能让我们发正式环境时更有把握!所以预发布环境是你的产 品质量最后⼀道防线,因为下⼀步你的项⽬就要上线了。要注意预发布环境服务器不在线上集成服 务器范围之内,为单独的⼀些机器。

        4. ⽣产环境:是指正式提供对外服务的线上环境,例如我们⽬前在移动端或PC端能访问到的APP都是 ⽣产环境。

         这⼏个环境也可以说是系统开发的三个重要阶段:开发->测试->上线。⼀张图总结:

        生产集群的稳定是需要代码的稳定和环境配置;

 2.3 git分支设计

        环境有了概念后,那么对于开发⼈员来说,⼀般会针对不同的环境来设计分⽀,例如:

         git flow 模型:

2.3.1 master分支:

        • master 为主分⽀,该分⽀为只读且唯⼀分⽀。⽤于部署到正式发布环境,⼀般由合并 release (测试分支)分⽀得到。

        • 主分⽀作为稳定的唯⼀代码库,任何情况下不允许直接在 master 分⽀上修改代码。

         • 产品的功能全部实现后,最终在master分⽀对外发布,另外所有在master分⽀的推送应该打标签 (tag)做记录,⽅便追溯。

        • master 分⽀不可删除。

2.3.2 feature分支

         • feature 分⽀通常为新功能或新特性开发分⽀,以 develop 分⽀为基础创建 feature 分 ⽀。

         • 命名以 feature/ 开头,建议的命名规则: feature/user_createtime_feature 。

         • 新特性或新功能开发完成后,开发⼈员需合到 develop 分⽀。

         • ⼀旦该需求发布上线,便将其删除。

2.3.3 develop分支

        •develop 为开发分⽀,基于master分⽀创建的只读且唯⼀分⽀,始终保持最新完成以及 bug 修 复后的代码。可部署到开发环境对应集群。

         • 可根据需求⼤⼩程度确定是由 feature 分⽀合并,还是直接在上⾯开发(⾮常不建议)。

2.3.4 hotfix分支

         • hotfix 分⽀为线上 bug 修复分⽀或叫补丁分⽀,主要⽤于对线上的版本进⾏ bug 修复。当线上 出现紧急问题需要⻢上修复时,需要基于 master 分⽀创建 hotfix 分⽀。

         • 命名以 hotfix/ 开头,建议的命名规则: hotfix/user_createtime_hotfix

         • 当问题修复完成后,需要合并到 master 分⽀和 develop 分⽀并推送远程。⼀旦修复上线,便 将其删除。

2.3.5 release 分⽀

        • release 为预发布分⽀,基于本次上线所有的 feature 分⽀合并到 develop 分⽀之后,基 于 develop 分⽀创建。可以部署到测试或预发布集群。

        • 命名以 release/ 开头,建议的命名规则: release/version_publishtime 。

         • release 分⽀主要⽤于提交给测试⼈员进⾏功能测试。发布提测阶段,会以 release 分⽀代码 为基准进⾏提测。

         • 如果在 release 分⽀测试出问题,需要回归验证 develop 分⽀看否存在此问题。

        • release 分⽀属于临时分⽀,产品上线后可选删除。 

3. 企业级项目实战

3.1 准备工作

        Gitee企业版免费版

3.2 创建项⽬

3.3 创建仓库

3.4 添加成员 

此时我们的固有分支如下所示:

故此我们由于分支源于master建立的,所以删除这个项目,重新建立项目;

完成上述操作机删除原项目;

        我们本次的新建项目是生产开发者项目:

此后进行新建分支:

在新分支上修改文件并提交:

        如下我们的feature分支开发完成之后:

        将该分支合并到develop分支上去,进行请求评审,合并分支:

        此时f分支上完成功能需求,提交到dev分支上,这时候就需要测试人员来在realse分支上进行测试了,realse分支是基于develop分支上创建出来的,我们创建realse分支的时候要确保当前的dev分支上是最先进的内容文件:

        r分支创建之后,就会在该分支上添加测试环境来进行测试,测试通过之后我们会将r分支合并到master分支上,即发布上线操作;

        即来到r分支上发起pr:完成上述操作之后,我们的master就是当前最先进的内容了:

ps:关于git的所有学习就到这里了结束了,十分感谢又走过一个春秋的自己;

        祝好运!

        Good Luck!

-------------------------------

        上嘉路

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文详解“位运算“在算法中的应用

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 目录 位运算的相关介绍(重要) 136. 只出现一次的数字 191.位1的个数 461. 汉明距离 260. 只出现一…

大模型的经典面试问题及答案,非常详细收藏我这一篇就够了

大语言模型(LLM)在人工智能中变得越来越重要,在各个行业都有应用。随着对大语言模型专业人才需求的增长,本文提供了一套全面的面试问题和答案,涵盖了基本概念、先进技术和实际应用。如果你正在为面试做准备&#xff0c…

【优选算法篇】在分割中追寻秩序:二分查找的智慧轨迹

文章目录 C 二分查找详解:基础题解与思维分析前言第一章:热身练习1.1 二分查找基本实现解题思路图解分析C代码实现易错点提示代码解读 1.2 在排序数组中查找元素的第一个和最后一个位置解题思路1.2.1 查找左边界算法步骤:图解分析C代码实现 1…

国产大模型基础能力大比拼 - 计数:通义千文 vs 文心一言 vs 智谱 vs 讯飞-正经应用场景的 LLM 逻辑测试

在大语言模型(LLM)不断涌现的时代,如何评估这些国产大模型的逻辑推理能力,尤其是在处理基础计数问题上的表现,成为了一个备受关注的话题。随着越来越多的国产大模型进入市场,比较它们在不同任务中的表现尤为…

群晖通过 Docker 安装 Gitea

1. 准备工作 1.1 安装 docker 套件 2.2 安装MySQL(可选) 群晖通过 Docker 安装 MySQL-CSDN博客 如果安装了MySQL,可以创建gitea用户和gitea_db数据库,并且赋予权限 #创建数据库 CREATE DATABASE gitea_db; #确认数据库已创建…

【Jenkins】2024 最新版本的 Jenkins 权限修改为 root 用户启动,解决 permission-denied 报错问题

最新版本的 Jenkins 修改 /etc/sysconfig/jenkins 中的 JENKINS_USERroot不会再生效,需要按照以下配置进行操作: vim /usr/lib/systemd/system/jenkins.service然后重启就可以了 systemctl daemon-reload # 重新加载 systemd 的配置文件 systemctl res…

JavaEE 多线程第三节 (lambda方法实现多线程/Thread属性和方法/前台线程后台线程)

欢迎阅读前序课程JavaEE 多线程第二节 (多线程的简单实现Thread/Runable)-CSDN博客 1. lambda方法实现多线程 public class Test {public static void main(String[] args) throws InterruptedException {Thread t new Thread(()->{while (true){System.out.println("…

探索云边缘与边缘云:技术革新与应用前景

#1024程序员节|征文# 在当今数字化快速发展的时代,云计算已经成为了企业和个人处理和存储数据的重要手段。然而,随着物联网(IoT)设备的爆炸式增长以及对低延迟、高带宽和实时处理的需求不断增加,云边缘和边…

简单介绍市面上的四款录屏软件!!!!

数字化时代,无论是工作还是生活中,录屏已经成为一个不可或缺的工具。然而,选择一款适合自己需求的录屏软件却并不容易。今日来为大家推荐四款超好用的录屏软件,分析这些软件的优缺点,让你在各种场景下都能轻松捕捉精彩…

vue3 解决背景图与窗口留有间隙的问题

需要实现一个登录界面&#xff0c;login.vue的代码如下&#xff1a; <script> import { ref } from vue;export default {setup() {return {};}, }; </script><template><div id"login-container" class"login-container"><di…

Tcp协议讲解与守护进程

TCP协议&#xff1a;面向链接&#xff0c;面向字节流&#xff0c;可靠通信 创建tcp_server 1.创建套接字 域&#xff1a;依旧选择AF_INET 连接方式&#xff1a; 选择SOCK_STREAM 可靠的 2.bind 3.监听装置 client要通信&#xff0c;要先建立连接&#xff0…

Allegro怎么批量将弧形线改成45度角的线?

Allegro如何将弧形线改成45度角的线? 在用Allegro进行PCB设计时,有时候需要将弧形线改为45度角的线。 具体操作方法如下: 1、选择菜单栏Route 选择Unsupported Prototypes(不支持的原型)→AICC 2、在Options选项卡选择45度 3、在Find选项卡选择Nets,选择网络可以批量转换…

浮动练习(3)

##每台电脑分辨率不同&#xff0c;数值高度宽度需要自己调&#xff0c;仅供参考 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> <style> div{ …

JMeter详细介绍和相关概念

JMeter是一款开源的、强大的、用于进行性能测试和功能测试的Java应用程序。 本篇承接上一篇 JMeter快速入门示例 &#xff0c; 对该篇中出现的相关概念进行详细介绍。 JMeter测试计划 测试计划名称和注释&#xff1a;整个测试脚本保存的名称&#xff0c;以及对该测试计划的注…

《使用Gin框架构建分布式应用》阅读笔记:p108-p126

《用Gin框架构建分布式应用》学习第8天&#xff0c;p108-p126总结&#xff0c;总计18页。 一、技术总结 1.Redis eviction policy (1)什么是 eviction policy? The eviction policy determines what happens when a database reaches its memory limit. (2)配置示例 在r…

Dockerfile样例

一、基础jar镜像制作 ## Dockerfile FROM registry.openanolis.cn/openanolis/anolisos:8.9 RUN mkdir /work ADD jdk17.tar.gz fonts.tar.gz /work/ RUN yum install fontconfig ttmkfdir -y && yum clean all && \chmod -R 755 /work/fonts ADD fonts.conf …

docker配置mysql8报错 ERROR 2002 (HY000)

通过docker启动的mysql&#xff0c;发现navicat无法连接&#xff0c;后来进入容器内部也是无法连接&#xff0c;产生以下错误 root9f3b90339a14:/var/run/mysqld# mysql -u root -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket …

二叉树中的最长交错路径

题目链接 二叉树中的最长交错路径 题目描述 注意点 每棵树最多有 50000 个节点每个节点的值在 [1, 100] 之间起点无需是根节点 解答思路 要找到最长交错路径&#xff0c;首先想到的是深度优先遍历因为起点无需是根节点&#xff0c;所以对于任意一个节点&#xff0c;其可以…

4个在线音频剪辑工具,让你的声音更加动听。

最近我开始接触音乐剪辑&#xff0c;想把一些歌曲进行剪辑创作&#xff1b;于是在网上好多了很多的音频剪辑软件进行试用&#xff0c;一番下来&#xff0c;发现了4款使用起来体验感比较好的专业剪辑工具&#xff0c;在这里跟大家分享分享。这些工具都可以被应用于歌曲创作&…

Linux系统基础-进程间通信(3)_模拟实现匿名管道

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Linux系统基础-进程间通信(3)_模拟实现匿名和命名管道 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&a…