項目的規(guī)模都是有小到大,從單一模塊開發(fā),到多個模塊并行開發(fā);從多個模塊開發(fā)完成集中測試發(fā)布,到模塊可配置測試發(fā)布。這些開發(fā)和發(fā)布流程都少不了版本管理工具。版本管理工具有很多種,從剛開始工作接觸到的CVS到SVN到現(xiàn)在用的GIT,由于目前公司用的是GIT,所以分享一下公司現(xiàn)在GIT的開發(fā)和發(fā)布流程。
平安健康Git開發(fā)、發(fā)布流程
Master
master永遠(yuǎn)都是發(fā)布版本的最新代碼。
master永遠(yuǎn)都是通過合并分支來改變,不允許提交代碼。
master發(fā)布完需要添加標(biāo)簽,標(biāo)簽為當(dāng)前的版本號。
這樣做的好處是為了更清楚的找到每個版本對應(yīng)的代碼,如果以后想做熱修復(fù)可以直接將對應(yīng)版本號的標(biāo)簽分支出來修改。
Vx.x.x_Develop
當(dāng)有新版本需要開發(fā),從Master上建分支并且修改代碼的VersionName和VersionCode提交。
例如:現(xiàn)在開發(fā)V1.7.0,我們從Master上拉取分支創(chuàng)建V1.7.0_Develop.不允許在develop分支上直接修改代碼進(jìn)行提交,develop只能通過合并module和hot_fix分支進(jìn)行改變,這樣才能解決動態(tài)發(fā)布。
Vx.x.x_Release
這個分支是和Develop分支一樣都從Master上建分支并且修改代碼的VersionName和VersionCode提交。這個分支的作用主要是解決動態(tài)發(fā)布。什么是動態(tài)發(fā)布,舉個栗子:假如并行開發(fā)兩個功能模塊moduleA、moduleB,在測試完成準(zhǔn)備發(fā)布同時,由于公司層面或者一些其他原因?qū)е耺oduleB不能上線,只單獨上線moduleA。這樣我們將moduleA分支合并到Vx.x.x_Release分支,由于代碼的修改只在各自的module分支上進(jìn)行修改,所以合并之后的Vx.x.x_Release+moduleA就是經(jīng)過測試可以發(fā)布代碼,經(jīng)過簡單的回歸測試就可以進(jìn)行發(fā)布了,發(fā)布之后將Vx.x.x_Release合并到master上并且添加當(dāng)前發(fā)布版本號的標(biāo)簽。
Vx.x.x_Hot_Fix
hot_fix是用來做線上版本熱修復(fù)的分支,一般都是從master分支出來的。假如要修改V1.7.0的bug,就從master標(biāo)簽為V1.7.0拉出來hot_fix分支,進(jìn)行修改代碼、測試,發(fā)布補丁包之后將hot_fix合并到master和develop上,保持master和develop是最新的代碼,最后刪除hot_fix分支。
Vx.x.x_ModuleX
根據(jù)功能進(jìn)行分支moduleA、moduleB、moduleC等等,如果存在develop分支那么就在它上分支出來,如果develop不存在那么就在master上拉出分支。在開發(fā)測試階段任何對代碼的修改都需要在各自的module上進(jìn)行,修改完成在合并到develop上進(jìn)行測試,當(dāng)版本發(fā)布了刪除對應(yīng)的module分支。
總結(jié):
以上開發(fā)、測試、發(fā)布流程不是最好的但是能解決我們公司當(dāng)前的多模塊并行開發(fā),選擇模塊上線發(fā)布的需求,如果有好的建議大家可以一起分享。
注意:不允許在develop上進(jìn)行修改代碼提交,更禁止在master上對代碼進(jìn)行修改提交。develop只允許通過合并module和hot_fix分支進(jìn)行修改,master只允許通過合并發(fā)布之后的develop和發(fā)布之后的hot_fix分支進(jìn)行修改。