為什么企業(yè)都是用gitlab,而不是github和gitee等呢?下面本篇文章就來(lái)介紹一下原因,并聊聊Gitlab工作流,希望對(duì)大家有所幫助!
GitLab由烏克蘭程序員DmitriyZaporozhets和ValerySizov開(kāi)發(fā),它使用Ruby語(yǔ)言寫成。后來(lái),一些部分用Go語(yǔ)言重寫。截止2018年5月,該公司約有290名團(tuán)隊(duì)成員,以及2000多名開(kāi)源貢獻(xiàn)者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等組織使用。
(相關(guān)資料圖)
GitLab擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問(wèn),它非常易于瀏覽提交過(guò)的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用。
為什么企業(yè)都是用gitlab,而不是github和gitee等呢?
當(dāng)一個(gè)項(xiàng)目版本多了,開(kāi)發(fā)人員多了,單純的git管理還是很多問(wèn)題,一方面是開(kāi)發(fā)人員權(quán)限過(guò)大,二是運(yùn)維人員不太了解我們開(kāi)發(fā)上面的流程,于是想著用更好的工具來(lái)管理項(xiàng)目。于是想到gitlab。
這里的CI/CD其實(shí)指的是持續(xù)集成(CI)和持續(xù)交付、持續(xù)部署(CD),CI就是軟件工程師每天頻繁地將更新代碼的副本傳遞到共享位置的過(guò)程。所有的開(kāi)發(fā)工作都在預(yù)定的時(shí)間或事件中進(jìn)行集成,然后自動(dòng)測(cè)試和構(gòu)建工作。通過(guò)CI,開(kāi)發(fā)過(guò)程中出現(xiàn)的錯(cuò)誤能被及時(shí)發(fā)現(xiàn),這樣不僅加速了整個(gè)開(kāi)發(fā)周期,而且使軟件工程師的工作效率更高。而CD 表示持續(xù)交付(CD)是創(chuàng)建高質(zhì)量應(yīng)用程序的第二個(gè)難題。CD是一門軟件開(kāi)發(fā)學(xué)科,利用技術(shù)和工具快速地交付生產(chǎn)階段的代碼。由于大部分交付周期都是自動(dòng)化的,所以這些交付能夠快速地完成。
后文我們會(huì)詳細(xì)介紹CI/CD的工作流程
在一個(gè) GitLab 項(xiàng)目上一起工作的最簡(jiǎn)單方法就是賦予協(xié)作者對(duì) git 版本庫(kù)的直接 push 權(quán)限。 你可以通過(guò)項(xiàng)目設(shè)定的 “Members(成員)” 部分向一個(gè)項(xiàng)目添加寫作者,并且將這個(gè)新的協(xié)作者與一個(gè)訪問(wèn)級(jí)別關(guān)聯(lián)(。 通過(guò)賦予一個(gè)協(xié)作者 “Developer(開(kāi)發(fā)者)” 或者更高的訪問(wèn)級(jí)別,這個(gè)用戶就可以毫無(wú)約束地直接向版本庫(kù)或者向分支進(jìn)行提交。
另外一個(gè)讓合作更解耦的方法就是使用合并請(qǐng)求。 它的優(yōu)點(diǎn)在于讓任何能夠看到這個(gè)項(xiàng)目的協(xié)作者在被管控的情況下對(duì)這個(gè)項(xiàng)目作出貢獻(xiàn)。 可以直接訪問(wèn)的協(xié)作者能夠簡(jiǎn)單的創(chuàng)建一個(gè)分支,向這個(gè)分支進(jìn)行提交,也可以開(kāi)啟一個(gè)向 master 或者其他任何一個(gè)分支的合并請(qǐng)求。 對(duì)版本庫(kù)沒(méi)有推送權(quán)限的協(xié)作者則可以 “fork” 這個(gè)版本庫(kù),向 那個(gè)副本進(jìn)行提交,然后從那個(gè)副本開(kāi)啟一個(gè)到主項(xiàng)目的合并請(qǐng)求。 這個(gè)模型使得項(xiàng)目擁有者完全控制著向版本庫(kù)的提交,以及什么時(shí)候允許加入陌生協(xié)作者的貢獻(xiàn)。(這有點(diǎn)類似 github,但目前github私有庫(kù)收費(fèi))
在 GitLab 中合并請(qǐng)求和問(wèn)題是一個(gè)長(zhǎng)久討論的主要部分。 每一個(gè)合并請(qǐng)求都允許在提出改變的行進(jìn)行討論(它支持一個(gè)輕量級(jí)的代碼審查),也允許對(duì)一個(gè)總體性話題進(jìn)行討論。 兩者都可以被分配給用戶,或者組織到 milestones(里程碑) 界面。
這個(gè)部分主要聚焦于在 GitLab 中與 Git 相關(guān)的特性,但是 GitLab 作為一個(gè)成熟的系統(tǒng),它提供了許多其他產(chǎn)品來(lái)幫助你協(xié)同工作,例如項(xiàng)目 wiki 與系統(tǒng)維護(hù)工具。 GitLab 的一個(gè)優(yōu)點(diǎn)在于,服務(wù)器設(shè)置和運(yùn)行以后,你將很少需要調(diào)整配置文件或通過(guò) SSH 連接服務(wù)器;絕大多數(shù)的管理和日常使用都可以在瀏覽器界面中完成。
一個(gè)企業(yè)當(dāng)中項(xiàng)目,一般來(lái)說(shuō),是幾個(gè)人同時(shí)進(jìn)行開(kāi)發(fā)的,那么如何對(duì)git分支進(jìn)行管理就成了一個(gè)重點(diǎn)問(wèn)題。
那么這里,我們就需要介紹一下我們的git flow工作流程了。
我們先從代碼的運(yùn)行環(huán)境來(lái)說(shuō)起。代碼運(yùn)?的環(huán)境 ?般來(lái)說(shuō),公司團(tuán)隊(duì)都會(huì)有?少這?個(gè)環(huán)境:
本地開(kāi)發(fā)環(huán)境: 開(kāi)發(fā)?員?測(cè)的,可以是??本地部署的靜態(tài)服務(wù)器,當(dāng)然也可類似是運(yùn)? npm server類似的環(huán)境,本地環(huán)境運(yùn)? 的代碼可以是任何分?的dev開(kāi)發(fā)環(huán)境: 這個(gè)環(huán)境是?開(kāi)發(fā)分?dev產(chǎn)出的代碼來(lái)部署的,唯?的公?的測(cè)試&預(yù)發(fā)布環(huán)境: 這個(gè)環(huán)境是?開(kāi)發(fā)分?release產(chǎn)出的代碼來(lái)部署的,唯?的公?的線上?產(chǎn)環(huán)境: 這個(gè)環(huán)境是?開(kāi)發(fā)分?master產(chǎn)出的代碼來(lái)部署的,唯?的公?的對(duì)應(yīng)的git分支模型是這樣的
對(duì)應(yīng)的分支策略是這樣的
master :保護(hù)分?,對(duì)應(yīng)的就是?產(chǎn)環(huán)境的分?release:保護(hù)分?,所有開(kāi)發(fā)完成的分?會(huì)申請(qǐng)合并到release分?,提供給測(cè)試?員測(cè)試feature-*:功能分?,具體功能開(kāi)發(fā)dev/test-*:開(kāi)發(fā)分?&臟分?,對(duì)應(yīng)的是?家共?的開(kāi)發(fā)環(huán)境,上?的代碼會(huì)部署到?個(gè)公共的開(kāi)發(fā)環(huán)境,供開(kāi)發(fā)? 員做?測(cè),應(yīng)付?些?常、??常的調(diào)試hotfix-*:bug緊急修復(fù)分?,可以直接合并到master,(假如release合并了?個(gè)feature分?,正在測(cè)試的情況 下,發(fā)現(xiàn)需要緊急修復(fù)的buf,緊急修復(fù)測(cè)試完畢后,可以直接合并到master,如果合并到release,在由 release合并到master,那些正在測(cè)試的功能或者還不準(zhǔn)備上線的功能就會(huì)跟著直接上線了)工作流程介紹
接到需求?檔,做評(píng)審后分配個(gè)每個(gè)?或?組的功能開(kāi)發(fā),相關(guān)?員從master 檢出功能分?
開(kāi)發(fā)的時(shí)候除了會(huì)在本地測(cè)試,有需要還會(huì)合并到dev分?,在公共的開(kāi)發(fā)環(huán)境去??做測(cè)試
因?yàn)樵陂_(kāi)發(fā)功能的期間,可能有hotfix完成合并到master,合并代碼的時(shí)候習(xí)慣merge?下master,防?沖突 等
?測(cè)完成之后,申請(qǐng)合并到release,合并成功后部署到測(cè)試環(huán)境后通知測(cè)試?員做測(cè)試
測(cè)試通過(guò)后,release申請(qǐng)合并到master,準(zhǔn)備上線
如果測(cè)試不通過(guò),在功能分?修改后重新merge
上線成功穩(wěn)定后刪除對(duì)應(yīng)的功能分?,dev 合并最新的master分?
(學(xué)習(xí)視頻分享:編程基礎(chǔ)視頻)
以上就是為什么企業(yè)都用gitlab?工作流是什么樣的?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: