【Git企业开发】第八节.企业级开发模型和企业级项目管理实战

news2024/11/29 20:32:19

文章目录

  • 前言
  • 一、企业级开发模型
  •       1.1 系统开发环境
  •       1.2 Git分支设计规范
  • 二、企业级项目管理实战
  •       2.1 DevOps研发平台
  •       2.2 开发场景-基于git flow模型的实践
  •       2.3 环境bug修复
  • 总结


前言


一、企业级开发模型

我们知道,一个软件从零开始到最终交付,大概包括以下几个阶段:

规划、编码、构建、测试、发布、部署和维护。

最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。但随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升,一个人已经hold不住了,就开始出现了精细化分工。

如下图所示:


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

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

双方往往存在利益的冲突。比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制。部门墙由此建立起来,这当然不利于IT价值的最大化。


为了弥合开发和运维之间的鸿沟,

需要在文化、工具和实践方面的系列变革——Devops正式登上舞台

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


一个软件的迭代,在我们开发人员看来,说白了就是对代码进行迭代,那么就需要对代码进行管理。如何管理我们的代码呢,那不就是Git(分布式版本控制系统)!

所以Git对于我们开发人员来说其重要性就不言而喻了。


1.1 系统开发环境

言归正传,对于开发人员来说,在系统开发过程中最常用的几个环境必须要了解一下:

1.开发环境:开发环境是程序猿们专门用于日常开发的服务器。

为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境。


2.测试环境:一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。

该环境是开发环境到生产环境的过渡环境。


3.预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测而设立的一套环境。

其配置等基本和生产环境一致,目的是能让我们发正式环境时更有把握!

所以预发布环境是你的产品质量最后一道防线,因为下一步你的项目就要上线了。要注意预发布环境服务器不在线上集成服务器范围之内,为单独的一些机器。


4.生产环境:是指正式提供对外服务的线上环境,

例如我们目前在移动端或PC端能访问到的APP都是生产环境。


这几个环境也可以说是系统开发的三个重要阶段:开发->测试->上线。

一张图总结:


对于规模稍微大点的公司来说,可不止这么几个环境,比如项目正式上线前还存在仿真/灰度环境,再比如还存在多套测试环境,以满足不同版本上线前测试的需要。

一个项目的开始从设计开始,而一个项目的成功则从测试开始。一套良好的测试体系可以将系统中绝大部分的致命Bug解决在系统上线之前。

测试系统的完善和成熟也是衡量一个软件企业整体水平的重要指标之一,测试往往被忽视,因为它对可以的隐性、对软件开发企业不产生直接的效益,但是它却是软件质量的最终保障,乃至项目能否成功的重要因素!!


1.2 Git分支设计规范

环境有了概念后,那么对于开发人员来说,一般会针对不同的环境来设计分支,

例如:

注:以上表格中的分支和环境的搭配仅是常用的一种,可视情况而定不同的策略。


master分支

  • master为主分支,该分支为只读且唯一分支。用于部署到正式发布环境,一般由合并release分支得到。
  • 主分支作为稳定的唯一代码库,任何情况下不允许直接在master分支上修改代码。
  • 产品的功能全部实现后,最终在master分支对外发布,另外所有在master分支的推送应该打标签(tag)做记录,方便追溯。
  • master分支不可删除。

release分支

  • release为预发布分支,基于本次上线所有的feature分支合并到develop 分支之后,基于develop分支创建。可以部署到测试或预发布集群。
  • 命名以release/开头,建议的命名规则:release/version_publishtime。
  • release分支主要用于提交给测试人员进行功能测试。发布提测阶段,会以release分支代码为基准进行提测。
  • 如果在release分支测试出问题,需要回归验证develop分支看否存在此问题。
  • release分支属于临时分支,产品上线后可选删除。

develop分支

  • develop为开发分支,基于master分支创建的只读且唯一分支,始终保持最新完成以及 bug修复后的代码。可部署到开发环境对应集群。
  • 可根据需求大小程度确定是由feature 分支合并,还是直接在上面开发(非常不建议)。

feature分支

  • feature分支通常为新功能或新特性开发分支,以develop分支为基础创建feature分支。
  • 部名以feature/开头,建议的命名规则:feature/user_createtime_feature
  • 新特性或新功能开发完成后,开发人员需合到develop 分支。
  • 一旦该需求发布上线,便将其删除。

hotfix分支

  • hotfix分支为线上bug修复分支或叫补丁分支,主要用于对线上的版本进行 bug修复。当线上出现紧急问题需要马上修复时,需要基于master分支创建hotfix分支。
  • 命名以hotfix/开头,建议的命名规则: hotfix/user_createtime_hotfix
  • 当问题修复完成后,需要合并到master 分支和develop分支并推送远程。一旦修复上线,便将其删除。

一张图总结:

其实,以上跟大家讲解的是企业级常用的一种Git分支设计规范: Git Flow模型。

但要说的是,该模型并不是适用于所有的团队、所有的环境和所有的文化。如果你采用了持续交付,你会想要一些能够尽可能简化交付过程的东西。有些人喜欢基于主干的开发模式,喜欢使用特性标志。然而,从测试的角度来看,这些反而会把他吓一跳。


关键在于站在你的团队或项目的角度思考∶这种分支模型可以帮助你们解决哪些问题?它会带来哪些问题?这种模式为哪种开发提供更好的支持?你们想要鼓励这种行为吗?你选择的分支模型最终都是为了让人们更容易地进行软件协作开发。因此,分支模型需要考虑到使用者的需求,而不是盲目听信某些所谓的“成功的分支模型”。

所以对于不同公司,规范是会有些许差异,但万变不离其宗,是为了效率与稳定。


二、企业级项目管理实战

2.1 DevOps研发平台

准备工作:

Gitee企业版免费版

图示示例:

企业名称可随意填写一个测试名称,只要能通过即可。

注意:

多人协作开发,需要将多人账号拉入一个企业下才行。如何添加成员后面会跟大家讲解。


1.创建项目

图示说明:


2.创建仓库

图示示例:

注意: 创建的仓库可以关联到某个项目中被管理。

3.添加成员

(1)添加企业成员

申请后需要负责人审批通过;

(2)添加项目成员

(3)添加仓库开发人员


2.2 开发场景-基于git flow模型的实践

新需求的加入:

现有一个订单管理的新需求需要开发,

首先可以基于develop分支创建一个feature/hyb_order_20231012分支。

图示说明:


步骤1:

1.需求在feature/hyb_order_20231012分支开发完毕,这时研发人员可以将代码合并到develop分支,将其部署在开发环境的服务器中,方便开发人员进行测试和调试。

(a)开发者在 feature 分支下发起请求评审。

图示说明:

(b)审查员审查代码

(C)审查通过合并分支

(D)合并成功,查看结构


步骤2:
在develop下开发人员自测通过后,先确定下develop 不存在未测试完毕的需求,然后研发人员可基于develop分支创建一个release/xxx分支出来,可交由测试人员进行测试。

图示说明:


步骤3:

测试人员测试release通过后(包含测试环境和预发布环境的测试),就可将代码合并入master 


步骤4:

测试人员在master (正式环境)测试通过后,便可删除feature/xxx分支。


2.3 环境bug修复

修复测试环境Bug

在develop测试出现了Bug,建议大家直接在feature分支上进行修复。修复后的提测上线流程与新需求加入的流程一致。


修改预发布环境Bug

在release测试出现了Bug,首先要回归下develop分支是否同样存在这个问题。如果存在,修复流程与修复测试环境Bug流程一致。

如果不存在,这种可能性比较少,大部分是数据兼容问题,环境配置问题等。


修改正式环境Bug

在master测试出现了Bug,首先要回归下release和develop分支是否同样存在这个问题。

如果存在,修复流程与修复测试环境Bug流程一致。

如果不存在,这种可能性也比较少,大部分是数据兼容问题,环境配置问题等。


紧急修复正式环境Bug

需求在测试环节未测试出Bug,上线运行一段时候后出现了Bug,需要紧急修复的。有的企业面对紧急修复时,支持不进行测试环境的验证,但还是建议验证下预发布环境。

可基于master创建hotfix/xxx分支,修复完毕后发布到master验证,验证完毕后,将master 代码合并到develop分支,同时删掉hotfix /xxx分支。


总结

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

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

相关文章

新手小白看过来——带你快速入门跨境电商

近几年来,国内外贸交易是越来越火爆,其中跨境电商成为了2023年的热门风口行业,尽管现在做跨境电商的从业者有很多,但仍然有许多0基础小白想通过跨境电商获取人生的第一桶金,那么新手应该如何在跨境电商领域取得成功呢&…

亲测:你这些网站都不知道,哪来时间去摸鱼?

一些我常用且好用的在线工具 Postcat - 在线API 开发测试工具 postcat.com/ API 开发测试工具 Postcat 是一个强大的开源、免费的、跨平台(Windows、Mac、Linux、Browsers...)的 API 开发测试工具,支持 REST、Websocket 等协议&#xff08…

五金信息展示预约小程序的作用是什么

五金行业所覆盖的产品很广,如灯具、浴具、门窗、工具等都是人们生活所需或常用到的,而五金行业规模也是连年上涨,市场呈现多品牌多门店多区域扩展的趋势。 虽然市场规模大,但同样问题不少,接下来我们来看看几个痛点。…

Python利器:Requests-HTML——网络爬虫的得力助手

概要 在Python的世界里,网络爬虫是一个非常热门的领域。而在这个领域中,Requests-HTML是一个强大的工具,它能够让我们轻松地处理HTML页面,从而获取需要的数据。本文将详细介绍Requests-HTML的特点、使用方法和一些实际应用案例&a…

jedis连接redis

package com.wsd;import redis.clients.jedis.Jedis;import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties;public class Redis {public static void main(String[] args) {//读取properti…

bat随手记

目录 bat批处理常用命令reg /?reg query /?cd /d "%~dp0"%cd%和%~dp0的区别setx命令(命令行实现永久设置环境变量)/v名称,/t类型,/d数据/f没有Yes/No询问 bat批处理常用命令 bat批处理常用命令 reg /? 查询有哪些reg命令 REG Operatio…

【2024全新版】程序员必会英语词汇表

“我英语不好可以学编程吗?” 相信这个问题,困扰着太多想学习编程,但英文不好的同学。 学习编程,常用的单词就那么多,只要把常见的单词学会,你的代码就能写的很6,英 语和编程的关系就是这么纯…

逆向USB设备共享:利用内网穿透让远程设备访问本地USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序,它提供了共享和访问本地或互联网上的U…

掌握这个技巧,你也能成为资产管理高手!

资产管理是企业管理中至关重要的一环,涉及到对公司财务、物资和信息等各个方面的有效监控和管理。 随着企业规模的扩大和业务复杂性的增加,采用先进的资产管理系统成为确保企业高效运营的必要条件之一。 客户案例 医疗机构 温州某医疗机构拥有大量的医…

使用nacos配置中心管理配置文件时,springcloud程序启动报错,无法找到对应的配置文件(加载到了错误的配置文件)

这里写目录标题 一、场景二、关键依赖三、报错信息四、排查1、bootstrap.yml配置2、查看Nacos配置中心3、重启后程序依旧报错,查看启动日志,发现Nacos加载到了错误的配置文件4、Debug查看源码,企图弄清楚使用错误应用名的原因5、找不到使用依…

QT 程序异常崩溃

出现以下问题,大概率是你在修改代码时,在pro或者pri中增加了一些不存在的头文件或者cpp,使用BeyondCmp仔细对比,分享,希望帮助到你

高质量发展项目——冠心病药物治疗管理标准化培训在京顺利举办

国家卫生健康委《关于加快药学服务高质量发展的意见》明确指出,药师应在慢性病管理中发挥积极作用,可开展用药随访、药物重整等工作。目前,国内尚无针对药师使用的冠心病患者药物治疗管理规范,不同层级医疗机构药师的理论水平和实…

XD6500S— LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 应用温湿度传感器 资产跟踪等

XD6500S是一系列LoRa SIP模块,集成了射频前端和LoRa射频收发器SX1262系列,支持LoRa和FSK调制。 收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种扩频协议,针对LPWAN 应用的低数据速率、超远距离和超低功耗通信进行了优化。通…

网络安全-黑客技术(自学笔记)

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…

CSS---关于font文本属性设置样式总结

目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…

使用OKhttp3 与青云客AI聊天机器人交互 -Java

1.青云客 官网&#xff1a;http://api.qingyunke.com/ 2.添加依赖 <!--okhttp3 依赖--><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.3</version></dependency&g…

Skywalking流程分析_9(JDK类库中增强流程)

前言 之前的文章详细介绍了关于非JDK类库的静态方法、构造方法、实例方法的增强拦截流程&#xff0c;本文会详细分析JDK类库中的类是如何被增强拦截的 回到最开始的SkyWalkingAgent#premain try {/** 里面有个重点逻辑 把一些类注入到Boostrap类加载器中 为了解决Bootstrap类…

WorkPlus移动数字化平台,助力企业全面掌控业务和生态

在移动化的时代&#xff0c;企业面临着将业务和生态纳入数字化平台的挑战。WorkPlus作为一款安全专属的移动数字化平台&#xff0c;成为企业业务和生态全面掌控的有力助手。它如同一艘强大的“航空母舰”&#xff0c;助力企业实现全面发展&#xff0c;从业务到生态&#xff0c;…

(珍藏版)Redis经典面试题32道,吊打面试官!

文章目录 Redis最新2023年面试题高级面试题及附答案解析(4)01、Redis 如何做内存优化&#xff1f;02、Redis 为什么要做 Redis 分区&#xff1f;03、Redis 的删除策略有哪些&#xff0c;怎么结合场景选择删除策略&#xff1f;04、Redis 如何理解事务&#xff1f;05、Redis 如何…