SVN多分支開發模式V1.0.1

来源:http://www.cnblogs.com/Javame/archive/2017/09/15/7526913.html
-Advertisement-
Play Games

1目的 規範開發模式過程,指導項目研發、質控測試、DevOps的相關活動。 2適用範圍 本規範的作用範圍是為互聯網軟體產品相關項目開發模式的管理過程。 (1) 對項目團隊中研發人員在開發模式過程中的活動、職責等方面進行了指導; (2) 對項目團隊中質控測試在開發模式過程中的活動、職責等方面進行了指導 ...


1目的

規範開發模式過程,指導項目研發、質控測試、DevOps的相關活動。

2適用範圍

本規範的作用範圍是為互聯網軟體產品相關項目開發模式的管理過程。

(1)   對項目團隊中研發人員在開發模式過程中的活動、職責等方面進行了指導;

(2)   對項目團隊中質控測試在開發模式過程中的活動、職責等方面進行了指導;

(3)   對項目團隊中DevOps人員在開發模式過程中的活動、職責等方面進行了指導。

3角色及職責定義

(1)   項目研發:需求功能的實現者,分支開發、轉測階段由研發負責人驅動,交付質控提測郵件中需明確六要素:

項目名稱、版本號、分支路徑、腳本路徑、部署手冊、功能邊界。

(2)   質控測試:為實現版本輪轉高效,除日常測試活動外,

測試環境【合併主幹併發布測試環境】、

預發佈環境【主幹測試通過發佈預發佈環境】、

生產環境【預發佈環境驗收通過,發佈生產環境並完成版本歸檔等】

由質控團隊統一負責服務。

(3)   DevOps:持續交付工具研發和維護,負責版本交付周期過程中的發佈支持。

4開發模式

包括單分支開發模式多分支開發模式。下麵分別闡述每種開發模式在項目過程中如何進行。

4.1開發模式

 

                            

(1)單分支開發模式:確定基線、拉分支、合主幹、項目發佈、版本歸檔、持續交付。

(2)多分支開發模式:確定基線、拉(特性)分支、同步/回滾/合主幹、項目發佈、

版本歸檔、持續交付。

4.1.1單分支開發模式

4.1.1.0確定基線版本

SVN-Trunk:工程Demo – 》特性開發–》 穩定版本

4.1.1.1拉分支

分支來源於穩定主幹,穩定主幹均需符合以下條件:

(1)   版本已發佈生產環境;

(2)   版本已完成版本歸檔。

4.1.1.2合主幹

分支提測合主幹

六要素:項目名稱、版本號、分支路徑、腳本路徑、部署手冊、功能邊界。

4.1.1.3項目發佈

4.1.1.3.1持續集成
  • 隨著軟體項目複雜度的增加,對確保集成和軟體組件一起工作的要求也就越來越高,因此要早集成,常集成。早集成、常集成,有助於在早期發現項目風險和質量問題,若到項目後期才發現這些問題,解決問題的代價會很大,將導致項目延期或者項目失敗。

 

 

l  Jenkins是將代碼進行統一的編譯打包、還可以放到tomcat容器中進行發佈。

通過配置,將以前:編譯、打包、上傳、部署到Tomcat中的過程交由Jenkins,Jenkins通過給定的代碼地址URL,將代碼拉取到其“宿主伺服器”(就是Jenkins的安裝位置),進行編譯、打包和發佈到容器中。

在Jenkins的宿主伺服器中必須要有可以進行:代碼clone(Git)、代碼編譯(Maven)、代碼運行(Tomcat)的基本環境

4.1.1.3.2持續部署

Udeployer是一套完整的持續交付生態系統,在交付過程的每一個步驟都是可視化、自動化的,可以帶來包括效能在內的顯著的好處,自動應用部署也改進了軟體的總體質量。Udeployer集合了Jenkins、swarm、docker等工具,在跨網段、跨內外網等方面可以靈活配置。在整個版本交付生命周期(包括部署在內)推薦使用Udeployer,能夠把人為的干預最小化、節省各環節等待時間,使得交付的流程更清晰化。一旦把人的干預去掉,質量就更加可預測,會變得更好。

其他自動化部署工具(Ansible、SaltStack)

4.1.1.4版本歸檔

版本管理是為滿足不同需求,對同一產品或系統進行局部的改進和改型所產生的產品或系統系列的變更情況進行記錄、跟蹤、維護和控制的過程。

版本是記錄特定對象各個可選狀態的快照,版本管理的任務就是對對象的歷史演變過程進行記錄和維護,根據實際應用背景選擇合適的版本間的拓撲結構,並至少應包括以下功能:(1)新版本的生成;統一、協調管理各個版本;

(2)有效記錄不同版本的演變過程及對不同版本進行有效管理,以儘可能少的數據冗餘記錄各版本。

(3)保證不同版本在邏輯上的一致性和相對獨立性,一個版本的產生和消失不會對其

餘版本的內容產生影響。

(4) 版本切換時,指定了新的當前版本後,必須保證對象的映象和指定的版本保持一致。

4.1.1.5持續交付

4.1.1.5.1統一源碼路徑(保證測試環境、預發佈環境、生產環境的源碼一致性)

(1)分支:由歸檔後的主幹創建,操作人員為項目研發,用於新需求功能實現。

(2)主幹:由提測分支合併,操作人員為質控測試;用於功能測試、測試環境、預發佈環境、生產環境的運行。

(3)Tag:預發佈環境驗收通過,發佈生產環境並完成版本歸檔,操作人員質控測試,用於記錄生產環境穩定版本,便於回滾主幹操作。

4.1.1.5.2統一依賴關係(保證測試環境、預發佈環境、生產環境的容器一致性)

(1)  Swarm集群

l  Swarm是一套較為簡單的工具,用來管理docker集群,它將一群Docker宿主機變成一個單一的,虛擬的主機。Swarm使用標準的Docker API介面作為其前端訪問入口,換言之,各種形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接與Swarm通信。

l  Swarm deamon只是一個調度器(Scheduler)加路由器(router),Swarm自己不運行容器,它只是接受docker客戶端發送過來的請求,調度適合的節點來運行容器,這意味著,即使Swarm由於某些原因掛掉了,集群中的節點也會照常運行,當Swarm重新恢復運行之後,它會收集重建集群信息。下麵是Swarm的結構圖:

 

 

圖1

 

圖2

(2)  Docker倉庫

  • Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。

  • 倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫註冊伺服器(Registry)混為一談,並不嚴格區分。實際上,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。

  • 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。 其作為預設docker倉庫,但在國內下載速度很慢。當然,用戶也可以在本地網路內創建一個私有倉庫。當用戶創建了自己的鏡像之後就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。

4.1.1.5.3自動化發佈(源碼交付和依賴關係交付,通過自動化交付實現)

同上“4.1.1.3項目發佈”

4.1.2多分支開發模式

同步/回滾/合主幹

 

 

4.1.2.1直接合併主幹

提測版本號末位-1與當前主幹版本號一致。

4.1.2.2先同步該主幹,再合併主幹

  (1)提測版本號末位-1與當前主幹版本號不一致;
(2)其他分支有歸檔記錄,找到最近一次歸檔的版本號。

4.1.2.3先回滾上一版本,再合併主幹

(1)提測版本號末位-1與當前主幹版本號不一致;

(2)其他分支無歸檔記錄;

(3)提測版本號末位-1在歷史版本中存在 , 則需找到主幹版本號末位-1的主幹。

4.1.2.4先回滾分支對應主幹,再合併主幹

(1)提測版本號末位-1與當前主幹版本號不一致;
(2)其他分支無歸檔記錄;
(3)提測版本號末位-1在歷史版本中不存在,則需找到對應的拉分支時主幹。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 溫度PID控制時, 有多個溫度測量點, 但最終只有一個溫度作為反饋值參與PID控制, 我們有時會採用平均值法, 計算所有溫度的平均值來作為PID的反饋值. 但在某一路溫度探頭斷線的情況下, 溫度值為零, 這時平均值就會小很多.像這種情況下中值法比較有效. 原理如下: 對於一組溫度, 模擬量轉換為數字... ...
  • 編譯:Lemon,原文作者:Ernst Haagsman 公眾號:Python數據之道(ID:PyDataRoad) pycharm:2017.3版即將新增科學計算模式 在JetBrains將發佈的新版本PyCharm中,考慮到越來越多的Python開發者進行數據科學相關開發,即將發佈的PyChar ...
  • 首先,看完這篇文章,不能保證你成為大神,但是卻可以讓你懂得什麼是爬蟲,如何使用爬蟲,如何利用http協議,侵入別人的系統,當然只是一些簡單的教程,拿到一些簡單的數據; 先上代碼,在一步一步講解: 這是一個工具類,不用詳細看,網上哪裡都能找到發送http請求的工具類,少包自己導 package com ...
  • 筆者每當遇到一個新事物的想去瞭解的時候,總是會問上自己第一個問題,這個新事物是乾什麼用的?在解釋我所理解的REST這個過程中也不例外,這篇博客我們先關註一下REST是乾什麼用的,然後後續再解釋REST是什麼。好了,不說廢話了,在上篇結尾處說到,REST是Web的架構風格,暫且不管REST和Web,我 ...
  • 【卻說那七衣仙女自受了大聖的定身法術,一周天方能解脫,各提花籃,回奏王母說道:“齊天大聖使術法困住我等,故此來遲。”王母問道:“汝等摘了多少蟠桃?”仙女道:“只有兩籃小桃,三籃中桃。至後面,大桃半個也無,想都是大聖偷吃了。及正尋間,不期大聖走將出來,行凶拷打,又問設宴請誰。我等把上會事說了一遍,他就 ...
  • ?useUnicode=true&characterEncoding=utf-8&useSSL=false ...
  • 【大聖看玩多時,問土地道:“此樹有多少株數?”土地道:“有三千六百株。前面一千二百株,花微果小,三千年一熟,人吃了成仙了道,體健身輕。中間一千二百株,層花甘實,六千年一熟,人吃了霞舉飛升,長生不老。後面一千二百株,紫紋緗核,九千年一熟,人吃了與天地齊壽,日月同庚。”大聖聞言,歡喜無任,當日查明瞭株樹 ...
  • 目前已定義的java設計模式細分下來有二十餘種,這篇博客主要是想從大家所熟知的孫悟空入手,闡述各個設計模式的概念和優缺點,以及他們之間的聯繫。 在下麵介紹的每個設計模式里,都會有與孫悟空相關的具體案例,主要是為了方便大家理解與記憶,否則使用一些枯燥的例子,很難讓人印象深刻。 按筆者的理解,設計模式的 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...