本文分支策略為總結各中小型企業常見做法(僅代表個人觀點),在下才疏學淺,文章如有缺漏或不當之處,望各位幫忙指正。寫此文也十分希望能起拋磚引玉之效。
據我所知,目前大部分無論是按瀑布/敏捷開發模型,就算伺服器資源十分有限的情況下,一套相對標準的研發流程也都應該至少具有開發(DEV)/測試(TEST)/生產(PROD)三個環境(叢集)。
Push
) 程式碼到此分支時,會觸發固定流水線(pipeline
),部署應用到開發環境。Push
) 程式碼到此分支時,會觸發固定流水線(pipeline
),部署應用到測試環境。Push
)操作,需要合併應當發起Pull Request
(PR),由負責生產環境的同事對此PR進行合併,此分支程式碼對應生產環境。main
分支建立出來的新分支,在此分支上緊急修改程式碼後,合併到測試環境,測試驗證通過後,直接發起Pull Request
(PR)提交到main
;此分支一般在緊急修復線上問題之後,可將其合併(merge
)到dev
,再將此分支刪除。feature
)上開發(包括修復bug),在功能分支開發自測,單元測試無誤後並需要進行介面聯調時,合併(merge
)到dev
(開發分支),觸發開發環境持續整合過程。dev
(開發分支) 合併(merge
)到test
(測試分支)上,觸發測試環境持續整合過程。feature
上面進行修復,然後統一按批次和時間
進行重新推播(push
)開發分支(dev
)和合並(merge
)測試(test
)過程Pull Request
(PR)test -> main
提交到,並編寫上線清單(包含上線資料指令碼,外部依賴服務,上線設定細節等等),通知負責生產環境的同事合併,按照上線約定時間和上線清單進行上線。main
分支建立出hotfix
分支,在此分支上修改程式碼後,合併到測試環境,經過測試驗證通過後由研發負責人發起Pull Request
(PR)hotfix -> main
,進行緊急修復上線流程。說明: 此分支策略下,feature
分支可以看作為開發人員熟悉的local
分支,feature
,dev
,test
均允許互相合並(merge
)
feature-xx
)上開發(包括修復bug),在功能分支開發自測,單元測試無誤後並需要進行介面聯調時,合併(merge
)到dev
(開發分支),觸發開發環境持續整合過程;多功能分支可並行開發。feature-xx
(功能分支) 合併(merge
)到test
(測試分支)上,觸發測試環境持續整合過程。feature-xx
上面進行修復,然後嚴格統一按批次和時間
合併(merge
)開發和合並(merge
)測試(test
)過程,以避免頻繁釋出造成測試環境不穩定。Pull Request
(PR)feature-xx -> main
,並編寫上線清單(包含上線資料指令碼,外部依賴服務,上線設定細節等等),通知負責生產環境的同事合併,按照上線約定時間和上線清單進行上線。main
分支建立出hotfix
分支,在此分支上修改程式碼後,合併到測試環境,經過測試驗證通過後由研發負責人發起Pull Request
(PR)hotfix -> main
,進行緊急修復上線流程。dev
作為開發環境公共驗證分支,test
作為公共提測分支,feature-xx
分支作為主要並行開發使用分支 ,最終會直接PR到main
(主分支), 開發人員務必最大程度保證此分支程式碼的穩定。dev
和test
進行相互合併(merge
);禁止任何從feature-xx -> main
和hotfix -> main
以外內容發起的Pull Request
(PR)feature-xx
分支不可進行相互合併(merge
)