配置庫管理及版本管理規範

 

 

 

 

 

 

 

配置庫管理及版本管理規範

 

 

 

 

 

 

 

版本信息                                       A代表新增,M代表修改,D代表刪除。

版本號

發佈日期

提交人

A.M.D

摘要

V1.0

2019/1/8

楊彬彬

A

初稿

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

配置庫管理及版本管理規範 1

1. 前言 4

1.1. 目的 4

1.2. 配置庫代碼管理工具 4

1.3. 角色和職責 6

2. 配置倉庫管理 7

2.1. 配置倉庫說明 7

2.2. 配置倉庫管理規範 8

2.3. 配置倉庫權限管理 9

2.4. 災備策略 12

2.5. 災備還原 12

3. 分支管理規範 12

3.1. 分支工作流程圖 13

3.2. 分支職責 13

3.3. 創建分支規範 14

3.4. 分支命名規範 15

4. 代碼管理規範 15

4.1. 提交代碼規範 15

5. 版本管理規範 17

5.1. 目的 17

5.2. 項目版本管理 18

5.3. 軟件產品包版本管理 18

5.4. 出包步驟 19

 

  1. 前言 
    1. 目的
  1. 規範項目代碼管理流程,明確開發人員和項目管理者的職責。
  2. 規範代碼庫分支管理和版本管理,使代碼分支及版本結構清晰,方便維護。
    1. 配置庫代碼管理工具 
      1. Git介紹

使用GitLab作爲代碼管理工具,GitLab 是一個用於倉庫管理系統的開源項目,使用Git作爲代碼管理工具,並在此基礎上搭建起來的web服務。

Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。可以實現數據備份、記錄歷史、回到過去、多端共享、分工合作。

      1. Git分層結構

 

git的工作總共分四層,其中三層是在本地,包括了工作目錄,暫存區和本地倉庫。

工作目錄

執行命令git init時所在的地方,也是執行一切文件操作的地方。

暫存區:

 在.git文件夾目錄中,在工作區和版本庫中間起緩存作用的一個區域。它通過git add命令添加進暫存區。存儲了一些即將被commit的文件。

本地倉庫

在.git文件夾目錄中,使用了git commit命令之後添加進的真正的“倉庫”。裏面存儲了每次commit的記錄,每次commit一次會讓HEAD指針指向新的目錄樹,而舊的目錄就存在版本庫中,可以使用命令來提出之前的目錄樹。

git所存儲的都是一系列的文件快照,然後git來跟蹤這些文件快照,發現哪個文件快照有變化它就會提示你需要添加到暫存區或是提交到本地倉庫來保證你的工作目錄是乾淨的。

進入工作區.git文件夾,如下.git目錄或文件結構說明:

目錄或文件

說明

config文件

項目的配置文件,裏面有中心服務器的信息和分支信息。

HEAD文件

指向當前的分支。

index文件

暫存區的相關信息。

logs目錄

相關操作產生的日誌。

objects目錄

存儲的就是所有的數據,也就是快照。 存放的是實際上的文件資源,每次當使用了git add命令之後,就已經把文件存到了objects目錄裏面。objects目錄中的object對象都有一個通過哈希算法計算出來的40位16進制的id,前兩位是目錄名,後38位是文件名。因爲哈希算法可以只比較哈希值,就能知道這兩個對象是不是一樣的,這樣可以提高效率。    

refs目錄

存儲指向數據提交對象的指針。

      1. 工作流程

    1. 角色和職責

角色名稱

職責

 配置管理員

  1. 管理配置服務器,維護代碼倉庫、安全設置,定期備份代碼倉庫。
  2. 負責爲項目提供全面的配置管理基礎設施和環境。包括代碼倉庫建立、人員添加等工作。
  3. 編寫和維護配置管理的相關文檔,包括服務器配置管理方法、配置工具使用方法等。
  4. 編寫培訓材料,制定培訓計劃,對開發人員和項目管理人員進行配置管理工具使用培訓。
  5. 負責構建release發佈版本。並解決或指導開發人員解決合併衝突。
  6. 負責解決在使用配置管理工具過程中遇到的問題。

  開發負責人

  1. 管理源代碼,構建代碼框架,導入配置服務器。
  2. 在配置管理員協助下對源代碼進行管理。
  3. 負責同意master分支的合併請求。
  4. 根據項目進展制定開發基線,管理版本編號以及分支版本,必要的時候,負責版本的合併。

  開發人員

  1. 從服務器克隆項目,按照分配的任務,進行分工協同開發。
  2. 從服務器獲取代碼庫最新變更,在自己負責的模塊中加入、修改或刪除文件。
  3. 及時提交代碼到開發分支並附加變更說明。
  4. 負責構建SIT環境版本。

測試負責人

  1. 制定測試計劃
  2. 確認條件不允許時的例外放行。
  3. 跟蹤並報告測試工作的進展,發佈後撰寫測試總結報告,對測試遺漏的問題進行分析。

測試人員

  1. 編寫測試計劃、規劃詳細的測試方案、編寫測試用例
  2. 根據測試計劃搭建和維護測試環境
  3. 執行測試工作,提交測試報告。包括編寫用於測試的自動測試腳本,完整地記錄測試結果,編寫完整的測試報告等相關的技術文檔。
  4. 對測試中發現的問題進行詳細分析和準確定位,與開發人員討論缺陷解決方案。
  5. 提出對產品的進一步改進的建議,並評估改進方案是否合理;對測試結果進行總結與統計分析,對測試進行跟蹤,並提出反饋意見。

 

 

  1. 配置倉庫管理
    1. 配置倉庫說明

     配置管理員負責建立配置倉庫,以便管理源代碼、相關文件及資料。每個開發人員在本地都有自己的版本庫,在服務器上有一個公共的版本庫。

    1. 配置倉庫管理規範

根據配置管理的不同角色所分配的不同職責範圍,對本地庫和版本庫進行管理和操作。

      1. 遠程倉庫管理
  1. 配置管理員:創建遠程倉庫、人員添加、權限分配、打標籤、構建版本等工作。
  2. 開發負責人:導入該項目到遠程倉庫並完成分支的創建和設置。
      1. 本地倉庫管理

本地庫由開發人員和開發負責人負責日常的更新和開發工作。

  1.  克隆遠程倉庫,搭建開發環境

開發人員根據配置管理提供的git訪問地址,將遠程倉庫克隆到本地,使工作區可以正常運行起來,並根據分支策略在開發分支上創建分支進行開發工作。

  1.  代碼提交

開發人員修改完成後提交代碼到暫存區,在暫存區域生成文件快照並提交到本地和遠程開發分支,由開發負責人來進行代碼的審覈和合並。建議開發人員及時同步代碼,以避免衝突和丟失修改。同時,開發人員必須保證上傳的代碼是通過編譯的。

在開發過程中,很多時候需要對一個項目進行分支操作,在開發分支上對項目進行開發。這由開發人員負責執行。

    1. 配置倉庫權限管理
      1. 添加用戶

新員工入職後,如需配置庫權限,可走OA或郵件(抄送部門領導)發送給配置管理員申請權限,待領導同意或OA審批通過後,配置管理員爲其創建用戶並分配對應權限。用戶名生成規則爲郵箱前綴。

      1. 創建

默認只有配置管理員有權限進行羣組的創建與編輯(可建子羣組),如有需要可提OA或郵件(抄送部門領導)發送給配置管理員申請權限,待領導同意或OA審批通過後,配置管理員爲其創建羣組或調整相應權限。郵件或OA裏面需要註明具體信息,如:創建羣組的名稱,或調整羣組的具體權限信息等。

      1. 用戶權限

如需配置庫權限,可走OA或郵件(抄送部門領導)發送給配置管理員申請權限,待領導同意或OA審批通過後,配置管理員爲其創建用戶並分配對應權限。郵件或OA裏面需要註明申請的具體信息,如:

姓名:xxx

羣組名與角色:atp-bos  master

項目名與角色:ATP/Common  develop

權限截止日期:2019-07-08(永久權限不寫此項)

不同角色擁有不同權限,下面列出Gitlab各角色常用權限

  1. 工程權限

行爲

Guest

Reporter

Developer

Master

Owner

創建issue

留言評論

更新代碼

 

下載工程

 

創建代碼片段

 

創建合併請求

 

 

創建新分支

 

 

提交代碼到非保護分支

 

 

強制提交到非保護分支

 

 

移除非保護分支

 

 

添加tag

 

 

創建wiki

 

 

創建里程碑

 

 

 

添加項目成員

 

 

 

推送保護分支

 

 

 

是否保護分支

 

 

 

修改/移除tag

 

 

 

編輯工程

 

 

 

添加deploy keys

 

 

 

配置hooks

 

 

 

切換visibility level

 

 

 

 

切換工程namespace

 

 

 

 

移除工程

 

 

 

 

移除保護分支

 

 

 

 

 

  1. 羣組權限

行爲

Guest

Reporter

Developer

Master

Owner

瀏覽組

編輯組

 

 

 

 

創建項目

 

 

 

管理組成員

 

 

 

 

移除組

 

 

 

 

      1. 保護分支

默認保護master分支,可使用正則表達式保護分支。保護的分支不能進行push -f操作。

      1. 項目的可見性

項目的可見性不能超出羣組的可見性範圍,項目或羣組有三種可見性:

Private:私有,必須配置權限纔可進行訪問。

Internal:內部,必須進行帳號密碼登錄後纔可進行訪問。

Public:公開,所有人都可進行訪問。

      1. 移除用戶

定期清理已離職或調出項目的成員權限

    1. 災備策略

<暫無>

    1. 災備還原

<暫無>

  1. 分支管理規範

本公司採用git flow工作流模式進行分支管理。

    1. 分支工作流程圖

圖 3-1 git flow工作流程圖

    1. 分支職責
  1. 主分支master

代碼庫應該有一個、且僅有一個主分支。它是自動建立的,一般默認此分支是被保護的,版本庫初始化以後,就是在主分支在進行開發。此分支除第一次進行原子提交推送外,只能接收其它分支合併,任何人不能直接在master分支上進行修改和提交。

  1. 開發分支develop

用於日常開發,存放最新的開發版的一個主要分支。不管是要做新的feature還是需要做bug fix,都是從這個分支分出來做。在這個分支下主要負責記錄開發狀態下相對穩定的版本,即完成了某個feature或者修復了某個bug後的開發穩定版本,開發完成需要提交測試的功能都必須要合併到該分支。

  1. 輔助分支

feature: 開發新功能的分支, 基於 develop, 完成後 merge 回 develop。

release: 準備要發佈版本的分支, 用來修復 bug. 基於 develop, 完成後 merge 回 develop 和 master;

hotfix: 修復 master 上的問題, 等不及 release 版本就必須馬上上線. 基於 master, 完成後 merge 回 master 和 develop。

    1. 創建分支規範

1.配置管理員在建立倉庫時創建一個master分支和develop分支。

2.開發人員根據開發的功能點從develop分支創建一個feature分支,當功能點開發測試完畢之後,就會合併到develop分支去,可以將feature分支刪除。

3.當需要發佈一個版本來測試時,開發人員從develop分支創建一個release分支來測試。

4.正式發佈後,過程中出現bug,從master分支創建一個hotfix分支,修補結束以後,再合併進master和develop分支。

    1. 分支命名規範
  1. 主幹分支:master
  2. 開發分支:develop
  1. 創建特性分支,名稱要以f-開頭,加上特性名
  2. 創建發佈分支,名稱要以r-開頭,加上預發佈版本號
  3. 創建Bug修復分支,名稱要以b-開頭,加上Bug號
  1. 創建標籤:
  1. 當軟件包發佈到UAT環境時要在release分支上打標籤,名稱要以發佈版本號加上RC1,RC2等結尾。
  2. 當軟件包發佈到正式環境後要在master分支上創建標籤,名稱要以發佈版本號加上REALESE結尾。
  1. 代碼管理規範
    1. 提交代碼規範
      1. 目的

爲了規範代碼庫分支管理和版本管理,使代碼分支及版本結構清晰,方便維護,並避免由於維護造成的錯誤的版本發佈等問題。

      1. 代碼提交說明

由對應分支修復的實際開發人員提交或合併到開發分支,開發負責人需要進行判斷是否需要合併,並協助解決衝突代碼。提交的信息必須按照代碼提交模板規定來書寫。

      1. 代碼提交模板

Commit message格式:

type(scope): subject

BugID:如果是修復Bug,請加上Bug號

 

type: 用於說明 commit 的類別,暫時只使用下面標識(後續可完善增加)。

feat:

新功能(feature)

fix:

修補bug

docs:

文檔(documentation)

style:

格式(不影響代碼運行的變動)

refactor:

重構(即不是新增功能,也不是修改bug的代碼變動)

chore:

構建過程或輔助工具的變動

test:

測試用例的修改

ci:

自動化流程配置修改

revert:

回滾到上一個版本

Other:

其它

 

scope:【可選】用於說明commit的影響範圍

subject

subject是 commit 目的的簡短描述,不超過50個字符。

例如:

feat(ssr): 增加可視化功能

BugID:8023

      1. 代碼提交步驟

1. 同步遠程倉庫代碼,和遠程倉庫進行代碼合併。

2. 將分支工作區修改的代碼和提交描述等提交到開發分支。

3. 開發負責人對提交的分支代碼進行審覈和合並,並解決衝突。

4. 同步到主分支上。

      1. 解決衝突

pull同步工作區,找到衝突文件,解決衝突重新提交。

  1. 版本管理規範 
    1. 目的

標識、控制和追蹤軟件開發和實施過程中產生的各種軟件產品版本。

    1. 項目版本管理
      1. 版本號約定

<主版本>.<次版本>.<增量版本>-<SNAPSHOT>

主版本:標示項目的重大架構變更。

次版本:表示重大Bug的修復,較大範圍的功能增加和變化。

增量版本:一般標示一些小的bug fix,不會有重大的功能變化。

SNAPSHOT:快照版本,只能用於開發階段對內發佈,對外發布時不允許出現SNAPSHOT版本。

eg:1.3.4-SNAPSHOT

【1】代表該版本是第一個重大版本;

【3】表示這是基於重大版本的第三個次要版本;

【4】表示該次要版本的第四個增量版本;

【SNAPSHOT】表示此版本爲快照版本;

 

版本號的修改由開發人員根據以上規則進行更改。

    1. 軟件產品包版本管理

預發佈環境:V主版本號.子版本號.增量版本號_日期版本號(yyMMdd)_階段版本號

如:V2.15.0_190108_RC1

正式環境:V主版本號.子版本號.增量版本號_日期版本號(yyMMdd)_RELEASE

如:V2.15.0_190108_RELEASE

 

主版本號:當功能模塊有較大的變動,比如增加多個模塊或者整體架構發生變化。此版本號由項目決定是否修改。

子版本號:當功能有一定的增加或變化,比如增加了對權限控制、增加自定義視圖等功能。此版本號由項目決定是否修改。

增量版本號:一般是 Bug 修復或是一些小的變動,要經常發佈修訂版,時間間隔不限,修復一個嚴重的bug即可發佈一個修訂版。此版本號由項目經理決定是否修改。

日期版本號:用於記錄修改項目的當前日期,每天對項目的修改都需要更改日期版本號。此版本號由開發人員決定是否修改。

階段版本號:此版本號用於標註當前版本的軟件處於哪個開發階段,當軟件進入到另一個階段時需要修改此版本號。此版本號由項目決定是否修改。

 

當軟件包正式發佈客戶後需要配置管理員進行歸檔操作。

    1. 出包步驟
  1. 項目負責人通知項目組準備出包,同時給出出包時間點,如半小時後出包。
  2. 開發人員收到出包通知後,儘快將完成的代碼進行提交到特性分支,並將特性分支代碼合併到develop分支。
  3. 提交代碼完成後,配置管理員基於develop分支拉release分支,並在構建時根據標籤命名標準構造新標籤號。如構建失敗則通知開發人員在release分支上修改後重新構建。
  4. 通過maven和jenkins進行構建、打包和發佈部署。
  5. 構建完成後通知相關人員。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章