【Git】六、企業級開發模型

文章目錄

  • Ⅰ. 前言
  • Ⅱ. 系統開發環境
  • Ⅲ. Git 分支設計規范
      • master分支
      • release分支
      • develop分支
      • feature分支
      • hotfix分支

在這里插入圖片描述

Ⅰ. 前言

? 我們知道,一個軟件從零開始到最終交付,大概包括以下幾個階段:規劃、編碼、構建、測試、發布、部署和維護。

? 最初,程序比較簡單,工作量不大,程序員一個人可以完成所有階段的工作。但隨著軟件產業的日益發展壯大,軟件的規模也在逐漸變得龐大。軟件的復雜度不斷攀升,一個人已經 hold 不住了,就開始出現了精細化分工。如下圖所示:

在這里插入圖片描述

但在傳統的 IT 組織下,開發團隊(Dev)和運維團隊(Ops)之間訴求不同:

  • 開發團隊(尤其是敏捷團隊)追求變化
  • 運維團隊追求穩定

? 所以雙方往往存在利益的沖突。比如,精益和敏捷的團隊把持續交付作為目標,而運維團隊則為了線上的穩定而強調變更控制。部門墻由此建立起來,這當然不利于 IT 價值的最大化

? 為了彌合開發和運維之間的鴻溝,需要在文化、工具和實踐方面的系列變革 ? DevOps 正式登上舞臺。

? DevOpsDevelopmentOperations 的組合詞)是一種重視 “軟件開發人員(Dev” 和 “IT運維技術人員(Ops” 之間溝通合作的文化、運動或慣例。透過自動化 “軟件交付” 和 “架構變更” 的流程,來使得構建、測試、發布軟件能夠更加地快捷、頻繁和可靠。在 DevOps 的軟件開發過程包含計劃、編碼、構建、測試、預發布、發布、運維、監控,由此可見 DevOps 的強大。

? 講了這么多,這個故事到底和我們課程的主題 Git 有什么關系呢?

? 舉一個很簡單的例子就能說明這個問題。一個軟件的迭代,在我們開發人員看來,說白了就是對代碼進行迭代,那么就需要對代碼進行管理。如何管理我們的代碼呢,那不就是 Git(分布式版本控制系統) 嗎,所以 Git 對于我們開發人員來說其重要性就不言而喻了!

Ⅱ. 系統開發環境

言歸正傳,對于開發人員來說,在系統開發過程中最常用的幾個環境必須要了解一下:

  1. 開發環境:開發環境是程序猿們專門用于 日常開發的服務器。為了開發調試方便,一般打開全部錯誤報告和測試工具,是最基礎的環境。
  2. 測試環境:一個程序在測試環境工作不正常,那么肯定不能把它發布到生產機上。該環境是 開發環境到生產環境的過渡環境
  3. 預發布環境:該環境是為避免因測試環境和線上環境的差異等帶來的缺陷漏測而設立的一套環境。其 配置等基本和生產環境一致,目的是能讓我們發正式環境時更有把握!所以預發布環境是你的產品質量最后一道防線,因為下一步你的項目就要上線了。要注意預發布環境服務器不在線上集成服務器范圍之內,為單獨的一些機器。
  4. 生產環境:是指正式提供對外服務的線上環境,例如我們目前在移動端或 PC 端能訪問到的 APP 都是生產環境。

? 這幾個環境也可以說是系統開發的三個重要階段:開發 -> 測試 -> 上線。一張圖總結:

在這里插入圖片描述

? 對于規模稍微大點的公司來說,可不止這么幾個環境,比如項目正式上線前還存在仿真/灰度環境,再比如還存在多套測試環境,以滿足不同版本上線前測試的需要。

? 一個項目的開始從設計開始,而 一個項目的成功則從測試開始。?套良好的測試體系可以將系統中絕大部分的致命 Bug 解決在系統上線之前。測試系統的完善和成熟也是衡量以個軟件企業整體水平的重要指標之以,測試往往被忽視,因為它對可以的隱性、對軟件開發企業不產生直接的效益,但是它卻是軟件質量的最終保障,乃至項目能否成功的重要因素!

Ⅲ. Git 分支設計規范

? 環境有了概念后,那么對于開發人員來說,一般會針對不同的環境來設計分支,例如:

分支名稱適用環境
master主分支生產環境
release預發布分支預發布/測試環境
develop開發環境開發環境
feature需求開發分支本地
hotfix緊急修復分支本地

? 注:以上表格中的分支和環境的搭配僅是常用的一種,可視情況而定不同的策略。

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 模型。但要說的是,該模型并不是適用于所有的團隊、所有的環境和所有的文化。如果你采用了持續交付,你會想要一些能夠盡可能簡化交付過程的東西。有些人喜歡基于主干的開發模式,喜歡使用特性標志。然而,從測試的角度來看,這些反而會把他嚇一跳。

? 關鍵在于站在你的團隊或項目的角度思考:這種分支模型可以幫助你們解決哪些問題?它會帶來哪些問題?這種模式為哪種開發提供更好的支持?你們想要鼓勵這種行為嗎?你選擇的分支模型最終都是為了讓人們更容易地進行軟件協作開發。因此,分支模型需要考慮到使用者的需求,而不是盲目聽信某些所謂的“成功的分支模型”。

? 所以 對于不同公司,規范是會有些許差異,但萬變不離其宗,是為了效率與穩定。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70655.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70655.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70655.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kafka可視化工具EFAK(Kafka-eagle)安裝部署

Kafka Eagle是什么? Kafka Eagle是一款用于監控和管理Apache Kafka的開源系統,它提供了完善的管理頁面,例如Broker詳情、性能指標趨勢、Topic集合、消費者信息等。 源代碼地址:https://github.com/smartloli/kafka-eagle 前置條件…

C++:dfs,bfs各兩則

1.木棒 167. 木棒 - AcWing題庫 喬治拿來一組等長的木棒,將它們隨機地砍斷,使得每一節木棍的長度都不超過 5050 個長度單位。 然后他又想把這些木棍恢復到為裁截前的狀態,但忘記了初始時有多少木棒以及木棒的初始長度。 請你設計一個程序…

電子商務網站租用香港服務器的好處有哪些?

電子商務網站租用香港服務器的好處主要包括: 香港服務器提供高速的網絡連接,國內訪問速度優勢明顯,滿足企業內部數據傳輸和遠程辦公需求。擁有國際出口帶寬優勢,實現與全球各地的高速連接,對跨國業務和海外市場拓展至關…

stm32108鍵C-B全調性_動態可視化樂譜鋼琴

108鍵全調性鋼琴 一 基本介紹1 項目簡介2 實現方式3 項目構成 二 實現過程0 前置基本外設驅動1 聲音控制2 樂譜錄入&基礎樂理3 點陣屏譜點動態刷新4 項目交互控制5 錄入新曲子過程 三 展示,與鏈接視頻地址1 主要功能函數一覽2 下載鏈接3 視頻效果 一 基本介紹 …

【p-camera-h5】 一款開箱即用的H5相機插件,支持拍照、錄像、動態水印與樣式高度定制化。

【開源推薦】p-camera-h5:一款輕量級H5相機插件開發實踐 一、插件背景 在Web開發中,原生攝像頭功能的集成往往面臨以下痛點: 瀏覽器兼容性問題視頻流與水印疊加實現復雜移動端適配困難功能定制成本高 為此,p-camera-h5 —— 一…

交叉編譯curl(OpenSSL)移植ARM詳細步驟

運行配置腳本 使用 Configure 腳本配置 OpenSSL,指定目標平臺和安裝路徑: curl downloads 各個版本 Old 1.1.1 Releases | OpenSSL Library 各個版本 從 OpenSSL 官網下載源碼包 tar -xzf openssl-1.1.1b.tar.gz cd openssl-1.1.1b/運行配置腳本 使…

大語言模型中的 Token如何理解?

在大語言模型中,Token 是文本處理的基本單元,類似于“文字塊”,模型通過將文本分割成Token來理解和生成內容。舉一個形象一點的例子,可以理解為 AI 處理文字時的“最小積木塊”。就像搭樂高時,每塊積木是基礎單位一樣&…

表單制作代碼,登錄動畫背景前端模板

炫酷動效登錄頁 引言 在網頁設計中,按鈕是用戶交互的重要元素之一。一個炫酷的按鈕特效不僅能提升用戶體驗,還能為網頁增添獨特的視覺吸引力。今天,我們將通過CSS來實現一個“表單制作代碼,登錄動畫背景前端模板”。該素材呈現了數據符號排版顯示出人形的動畫效果,新穎有…

1分鐘用DeepSeek編寫一個PDF轉Word軟件

一、引言 如今,在線工具的普及讓PDF轉Word成為了一個常見需求,常見的pdf轉word工具有收費的wps,免費的有pdfgear,見下文: PDFgear:一款免費的PDF編輯、格式轉化軟件-CSDN博客 還有網上在線的免費pdf轉word工具smallp…

【找工作】C++和算法復習(自用)

文章目錄 C頭文件自定義排序函數stl 算法數據結構樹狀數組 數學字符串manacherkmp 自用隨便記錄 C 排序 stl 頭文件 全能頭文件&#xff1a; #include<bits/stdc.h>自定義排序函數 bool compare(const int &odd1,const int &odd2) {return odd1>odd2; }…

請談談 React 中的狀態管理,如何使用 Context API 和 Redux 進行狀態管理?

一、Context API 深度應用 1. 核心實現原理 通過createContext創建上下文對象&#xff0c;使用Provider組件包裹需要共享狀態的組件樹&#xff0c;子組件通過useContext Hook或Consumer組件消費數據。 代碼示例&#xff08;主題切換場景&#xff09;&#xff1a; // 創建上…

kotlin的Int類型調用toString()會導致空指針嗎

DeepSeek R1 思考 38 秒 思考過程 用戶的問題是關于Kotlin中Int類型調用toString()是否會導致空指針異常。首先&#xff0c;我需要回憶Kotlin的基本類型系統。Kotlin中的Int屬于基本數據類型&#xff0c;但它在語言層面被表示為非空類型。也就是說&#xff0c;Int變量本身不能…

網絡運維學習筆記 017 HCIA-Datacom綜合實驗01

文章目錄 綜合實驗1實驗需求總部特性 分支8分支9 配置一、 基本配置&#xff08;IP二層VLAN鏈路聚合&#xff09;ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 單臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 綜合實…

基于Hadoop的汽車大數據分析系統設計與實現【爬蟲、數據預處理、MapReduce、echarts、Flask】

文章目錄 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹爬蟲數據概覽HIve表設計Cars Database Tables 1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distri…

springboot實現多文件上傳

springboot實現多文件上傳 代碼 package com.sh.system.controller;import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PostMap…

Java所有運算符理解

Java 運算符 算術運算符 表格中的實例假設整數變量A的值為10&#xff0c;變量B的值為20&#xff1a; 操作符描述例子加法 - 相加運算符兩側的值A B 等于 30-減法 - 左操作數減去右操作數A – B 等于 -10*乘法 - 相乘操作符兩側的值A * B等于200/除法 - 左操作數除以右操作數…

紛析云:賦能企業財務數字化轉型的開源解決方案

在企業數字化轉型的浪潮中&#xff0c;財務管理的高效與安全成為關鍵。紛析云憑借其開源、安全、靈活的財務軟件解決方案&#xff0c;為企業提供了一條理想的轉型路徑。 一、開源的力量&#xff1a;自主、安全、高效 紛析云的核心優勢在于其100%開源的財務軟件源碼。這意味著…

Golang深度學習

前言 在2009年&#xff0c;Google公司發布了一種新的編程語言&#xff0c;名為Go&#xff08;或稱為Golang&#xff09;&#xff0c;旨在提高編程效率、簡化并發編程&#xff0c;并提供強大的標準庫支持。Go語言的設計者們希望通過Go語言能夠解決軟件開發中的一些長期存在的問…

博客系統筆記總結 2( Linux 相關)

Linux 基本使用和程序部署 基本命令 文件操作 顯示當前目錄下的文件 ls&#xff1a;顯示當前目錄下的文件 ll&#xff1a;以列表的形式展示&#xff0c;包括隱藏文件 進入目錄 && 顯示當前路徑 cd&#xff1a;進入目錄&#xff08;后面跟相對路徑或者絕對路徑&…

開源基準測試模擬器:BlueROV2 水下機器人的控制

拜讀An Open-Source Benchmark Simulator: Control of a BlueROV2 Underwater Robot 非常感謝Esben Uth的幫助。 本文介紹了在 Simulink? 中實現的常用且低成本的遙控潛水器 &#xff08;ROV&#xff09; BlueROV2 的仿真模型環境&#xff0c;該環境已針對水下航行器的基準控…