1. Git是什麼?
做爲一名程序猿,我相信你們都或多或少接觸過git--分佈式版本控制軟件。git
有人說,它是目前世界上最早進的分佈式版本控制系統,我想說,是否最早進不知道,但確實好用,實用。分佈式
做爲一款風靡全球的軟件,不得不提提它的歷史:工具
--由Linus Torvalds創做,並與2005首次發佈,最初僅是爲更好的管理Linux核心開發而設計,未曾想太優秀,現在已被廣爲使用。測試
2. 咱們可用Git來幹什麼?
做爲一款分佈式版本控制軟件,聽上去高端大氣上檔次,但說白了,就是一款項目代碼管理工具。設計
3. 如何正確使用Git?
既然Git如此好用,理所固然,目前全球各大公司大多采用該軟件做爲項目代碼的管理工具。版本控制
猶記得當初剛從學校進入企業,發現原來公司的代碼是這樣管理的,看上去猴塞雷的樣子。固然,伴隨着操做當心翼翼,生怕一頓操做猛如虎,犯錯回家賣紅薯。。blog
做爲一個接觸多年的老手,則肆無忌憚,斧削刀砍,好不快活。講真,那會羨慕的不要不要~~生命週期
其實,只要懂得正確操做流程,你也能夠大刀闊斧,那麼下面的知識,你值得擁有!!項目管理
4. 項目管理
好了,閒話就此打住,仍是得來點乾貨。資源
我相信你們必定聽過一句話:做爲一款穩定的產品,咱們必定要保證項目運行的四個九。咋聽之下,一臉狐疑。其實,意爲保證項目運行99.99%(至於那遁去的1,你懂的),即高可用的又一說法。
爲保證項目高可用,產品上線必須嚴格遵照必定的流程。
這裏提幾個概念,可能與你所在公司說法不太同樣,但我相信都是換湯不換藥,領略精髓便可,大可沒必要咬文嚼字。
Git 分支:
- master--該分支通常做爲備份使用,一般爲最穩定代碼。
- dev--該分支做爲開發分支,持續開發,持續集成。
- feature--該分支做爲需求開發分支,生命週期由需求建立到完成。
- release--該分支做爲版本發佈分支。
- hotfix--該分支做爲bug修復分支,發佈版本存在重要缺陷時,拉出該分支,並由該分支發佈hotfix版本。
部署環境:
- DEV/Local環境--本地環境。通常而言,程序猿接到一個新的需求時,會在本地開發,完成後本身測試,這裏稱爲本地環境(固然財大氣粗的公司可能會專門準備一套DEV環境用於測試)。
- QA環境--與產線環境配置一致(單實例)。需求本地測試經過後,部署到QA環境中,由QA進行測試。因爲QA環境部署頻繁,若是多實例部署會形成資源和時間上的浪費。
- BTS環境--與產線環境徹底一致(分佈式)。在版本發佈前,部署到BTS環境,該環境和產線環境徹底一致。通常會在版本發佈前3天部署到該環境,作UAT(用戶接受測試)。
- PROD環境--分佈式系統。產線環境。
4.1 新需求:
開發流程:
![](http://static.javashuo.com/static/loading.gif)
- 當團隊接到新的需求時,通常會安排某個或某幾個程序猿來開發該功能。在瞭解完需求和設計後,開發會拉出對應的feature分支,全部該需求的代碼都將在該分支上進行開發。
- 當開發完成,爲驗證功能可行性,程序猿須要在本地進行對應測試,經過後將代碼合入到dev分支。
- 利用Jenkins從dev分支中進行打包,而後部署到QA環境中,由團隊中專職QA進行功能測試。測試不經過,上述步驟重複。測試經過,該需求結束。
這裏,有些小夥伴則會問,爲何本地測試經過了,而在QA環境中卻不經過呢?
一般,一個團隊都會同時接多個需求,你們的代碼都會並行往dev中合入,這時就有可能影響到其餘的需求,或者被其餘需求影響,致使bug。
Git詳細流程:
![](http://static.javashuo.com/static/loading.gif)
4.2 發佈新版本
開發流程:
![](http://static.javashuo.com/static/loading.gif)
- 當發佈新版本時,以時間或需求結束點爲節點,打對應tag(方便之後回溯)。從該tag拉出release分支,Jenkins從release分支打包。
- 將包部署到QA環境,由專職QA進行測試。
- 若是測試不經過,從release分支中拉出hotfix分支,在hotfix分支上進行bug修復,本地測試完畢,Jenkins從hotfix分支打包,部署到QA環境測試。
- 測試經過,下一步。
- 將包部署到BTS環境,由專職QA進行測試。測試不經過,判斷當前分支,若爲release分支,則從該分支拉出hotfix分支,在hotfix修復bug後;若爲hotfix分支,則直接修改bug,本地測試完畢,Jenkins打包hotfix分支,部署到QA測試。
- 將包部署到PROD環境,由專職QA進行測試,測試不經過, 判斷當前分支,若爲release分支,則從該分支拉出hotfix分支,在hotfix修復bug後;若爲hotfix分支,則直接修改bug,本地測試完畢,Jenkins打包hotfix分支,部署到QA測試。
Git詳細流程:
![](http://static.javashuo.com/static/loading.gif)
上述的內容,僅爲我的多年開發經驗總結,或許與標準流程有必定的出入。
若有錯誤之處,忘各位大佬不吝斧正。
做者:吳家二少
博客地址:https://www.cnblogs.com/cloudman-open/
本文歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接