# 十二、GIT分支及API JAR上傳規范
**開發環境分支管理:**
對于小型的項目,可以使用 feature branch workflow,對于有明確開發、測試、發布周期的正式項目,建議使用 gitflow workflow。
對于 feature branch workflow只有經過審核的 Pull Request 可以提交到主分支
**有兩種可以使用的工作流策略,**
* **基于特性分支(Feature branch workflow)的工作流策略,**
* **Gitflow** **工作流策略,詳細的信息參考:[gitflow流程參考文檔](https://www.cnblogs.com/jeffery-zou/p/10280167.html)**
# **私有云:Gitflow 工作流策略**
**]

* 功能分支(feature):開發環境使用(Dev)開發者按照需求定義。只有經過審核的 Pull Request 可以提交到develop分支,開發分支上需要確保沒有 P0 級別的缺陷
* 分支命名規范:feature\_{時間戳}\_{業務名}??以 JIRA 編號命名,例如 CL-1234
* 開發分支(develop):測試環境(sit)固定使用,每周的功能迭代使用feature,一個迭代期完成后feature合并develop分支。
* 分支命名規范:develop:rtXX
* 發布分支(release):預發布環境、生產(UAT/PROD) 環境使用。當UAT環境測試通過后,release分支同時合并進入master與develop分支。運維人員使用rt\_xx 分支發布生產環境
* 分支命名規范:rt\_{序列號}
* 主分支(master):release分支發布完成后合并master 提交tag,并刪除發布分支。
* 發布標簽命名:rt1.0
* 熱修復分支(hostfix):hotfix開發分支從主分支對應的發布標簽創建熱修復開發分支。hotfix 分支需要同時合并master分支與develop分支。熱修復版本發布后做發布標簽,合并回主分支,并 cherry-pick 所有(或者必要的)改動到當前開發分支,并刪除熱修復開發分支
* 分支命名規范:rt1.1
主分支上需要確保沒有 P0 級別的缺陷
對于 gitflow workflow只有發布分支可以合并到主分支
主分支上始終保存有發布質量的代碼
# 發布時間節點
網站端每周發布一次,以 RT (Release Train)標記,代碼鎖定時間是每個周末(通常是周日晚上),發布時間是下周二晚上。代碼鎖定后到發布之間的代碼修改需要使用 cherry-pick 方式。
# **規范:**
**版本號:v X.X.X(.X)**
**版本號為當期迭代確定的版本號,日常迭代合并master后打出對應迭代版本號的tag,4為迭代上線后線上問題hotfix修復版本號升級標識**
**1****為主版本號,2為較大功能變更,3為小的日常迭代版本,4為hotfix**
開發分支 dev\_{YYYYMMDD}\_{v X.X.X}? feature分支(fea\_{YYYYMMDD}\_{v X.X.X})不做強制要求,按迭代實際情況是否拉取
提測后打test\_tag\_{v X.X.X.X}進行SIT/UAT測試,如果有修改,重新提測,升級TAG版本
UAT測試完成以測試TAG最終版本test\_tag\_{v X.X.X.X}進行生產上線,上線驗證完成后由測試合并master分支,打master\_tag\_{v X.X.X}
上線完成合并master后,其他開發分支需要將master分支內容合并到未完成的DEV開發分支
**例如:**
1,目前master tag版本為? maste\_tag\_v1.2.3
2,迭代啟動確定此次開發版本為v1.2.4
3,開發拉取dev分支:dev\_20190820\_v1.2.4
4,提測后,從dev分支打tag分支:test\_tag\_v1.2.4.0交付測試進行sit測試,如測試有問題,修改dev分支后從新打test\_tag\_v1.2.4.1交付測試
5,sit完成后以最新測試tag分支test\_tag\_v1.2.4.1進行uat測試號,發現問題后返回第4步升級tag版本test\_tag\_v1.2.4.2,進行sit測試,再進行uat測試
6,uat完成后使用最新tag分支test\_tag\_v1.2.4.2進行上線,上線驗證成功后合并master,打master\_tag\_v1.2.4
7,如果發現線上問題,需要修復,拉取hotfix\_20190821\_v1.2.4.1按照dev分支同樣步驟進行緊急上線完成后打master\_tag\_v1.2.4.1
**老環境(目前情況):**
開發分支 dev\_{時間戳}\_{業務名}
測試也用開發分支
生產合并release
測試比對版本回歸后進行上線
線上驗證完成合并master,其他正在進行的開發分支進行master合并
如果上生產后有線上緊急需要修復問題,從master拉取hotfix版本,同迭代分支步驟要求一致
**Jar****包管理規范:**
**私有云&老環境:**
DEV及SIT環境用SNAPSHOT進行開發測試,普通開發人員沒有deploy ?release的權限
UAT環境測試中用snapshot版本,穩定后使用release,如果release后有修改,需用snapshot驗證無誤后升級release版本號進行更新
- 云原生應用
- 容器化微服務改造方案
- 應用容器化上線規范
- 服務網格和傳統應用區別
- DevOps 管理規范
- 基礎架構管理規范
- 域名管理規范
- 主機名稱管理規范
- 應用域名管理規范
- 應用上線規范
- GIT分支及API JAR上傳規范
- 基礎架構設計
- 運維管理職責
- 基礎服務
- DNS 內部架構
- centos 及 kernel 版本標準
- Linux服務器OS標準配置
- Docker版本初始化
- kuberneter 集群方案
- kubernetes 命名規范
- Jenkins CI/CD
- nginx 配置文件變更流程
- Prometheus 容器監控
- 項目資源需求
- 應用服務
- 編譯和運行期標準
- 新核心系統基礎服務架構
- 安全防御
- 互聯網軟件可靠性工程及可靠性度量