基于gitlab源碼管理解決方案
基于git、gitlab源碼管理解決方案武漢交易通信息技術(shù)有限公司2017年7月6日目錄基于git、gitlab源碼管理解決方案11宗述31.1適用范圍31.2術(shù)語解釋31。3 gitlab簡介31.4目標(biāo)以及解決的問題31.5應(yīng)用背景32 源碼管理需求和問題分析42.1項(xiàng)目源碼權(quán)限控制42。2項(xiàng)目源碼版本備份與安全42.3項(xiàng)目的進(jìn)度跟蹤43 基于gitlab解決方案53.1 gitlab項(xiàng)目訪問級別控制53.2 gitlab項(xiàng)目版本庫備份73。3 gitlab項(xiàng)目版本庫管理81宗述1。1適用范圍本文檔適用于產(chǎn)品實(shí)施部源碼管理域1.2術(shù)語解釋Push:推送Pull:拉取Commit:提交Clone:克隆1.3 gitlab簡介gitlab是開源的源碼協(xié)作軟件。使用細(xì)粒度訪問控制管理git倉庫以達(dá)到確保你的源碼安全??蓤?zhí)行源碼檢查和提高源碼合并請求。每一個項(xiàng)目都有各自的問題跟蹤日志。全球超過10萬個組織在使用,gitlab是管理git倉庫的最流行的軟件之一。1。4目標(biāo)以及解決的問題目標(biāo):(1) 項(xiàng)目訪問級別設(shè)置.(2) 項(xiàng)目管理和跟蹤。(3) 用戶訪問權(quán)限設(shè)置。解決的問題(1) 項(xiàng)目備份繁瑣。(2) 版本差異對比繁瑣。(3) 版本回退困難。1.5應(yīng)用背景(1) 實(shí)施項(xiàng)目眾多.全國各地的MIS項(xiàng)目、POS項(xiàng)目眾多,需要對各個項(xiàng)目源碼、釋放包進(jìn)行備份.采用傳統(tǒng)的FTP方式備份源碼,隨著時間的推移,源碼數(shù)量越來越龐大,從最新版本回歸到歷史版本,需要進(jìn)行手工操作,并使用工具對比版本之間的差異,在這個過程中花費(fèi)的時間成本較高。(2) 項(xiàng)目代碼整理復(fù)雜。為了適應(yīng)調(diào)用MIS接口的交易系統(tǒng)的更新迭代,需要修改MIS接口源碼,并發(fā)布釋放包。使用傳統(tǒng)的方式管理源碼,并沒有記錄源碼修改日志,無法對源碼進(jìn)行版本遞歸,難以達(dá)到排查錯誤,代碼優(yōu)化的目的. 2 源碼管理需求和問題分析2。1項(xiàng)目源碼權(quán)限控制項(xiàng)目源碼屬于公司的財產(chǎn),里面包含許多有價值的信息以及公司核心技術(shù)。如果源碼核心技術(shù)的泄露被競爭對手獲得,會對公司造成損失,降低市場產(chǎn)品的競爭力,因此必須對源碼進(jìn)行有效的控制。所以用戶與當(dāng)前項(xiàng)目是否存在關(guān)系,如果存在關(guān)系,用戶在當(dāng)前項(xiàng)目中擔(dān)任怎樣的一種角色?項(xiàng)目應(yīng)該對該用戶開發(fā)哪些信息,授予哪些權(quán)限等等,是項(xiàng)目管理者考慮的問題2。2項(xiàng)目源碼版本備份與安全 采用哪種方式備份源碼,如何確保源碼安全,避免源碼的丟失十分重要。傳統(tǒng)的備份方式會導(dǎo)致很多問題。復(fù)制整個項(xiàng)目目錄來保存不同的版本,或許還會改名加上備份時間以示區(qū)別。這么做唯一的好處就是簡單,不過壞處卻不少:有時候會混淆所在的工作目錄,弄錯了文件丟了數(shù)據(jù)就沒了退路。版本丟失后續(xù)的開發(fā),只能從某個歷史版本基礎(chǔ)上重寫開發(fā),重復(fù)花費(fèi)人力物力。如果備份服務(wù)器磁盤損壞了,這是災(zāi)難性的,公司正在運(yùn)營的項(xiàng)目會到惡劣的影響,不能修復(fù)現(xiàn)有項(xiàng)目的功能缺陷以后續(xù)的開發(fā)。傳統(tǒng)方式備份難以做到版本遞歸、查閱開發(fā)者提交的文件內(nèi)容變更信息、提交日期;難以做到多開發(fā)者并行開發(fā)以后代碼合并。2.3項(xiàng)目的進(jìn)度跟蹤 沒有使用版本控制的傳統(tǒng)進(jìn)度跟蹤方式難以及時跟蹤項(xiàng)目進(jìn)度。項(xiàng)目開發(fā)者的工作處于哪一個階段?一天的開發(fā)工作量是多少?代碼編寫質(zhì)量如何?使用傳統(tǒng)的方式只能詢問開發(fā)者,閱讀開發(fā)者的項(xiàng)目源碼,十分不方便。如何保證項(xiàng)目進(jìn)度,控制風(fēng)險,提高工作質(zhì)量和效率變得十分艱難。不能隨時隨地獲知項(xiàng)目的進(jìn)度、查看代碼的變更、不能審核代碼確保代碼的質(zhì)量。3 基于gitlab解決方案3.1 gitlab項(xiàng)目訪問級別控制訪問級別的控制確保源碼信息開放安全.gitlab中項(xiàng)目有3種訪問級別。私有:必須授權(quán)特定用戶,該用戶才能訪問項(xiàng)目.內(nèi)部:登錄到gitlab的用戶可訪問該項(xiàng)目.公開:無需任何認(rèn)證的人都能訪問該項(xiàng)目.項(xiàng)目所有者可為該項(xiàng)目添加特定成員,并授予Guest、Report、Developer、Master角色,每一個角色對項(xiàng)目擁有不同的權(quán)限,Guest Report< Developer<Master。也可以將某個用戶從項(xiàng)目中移除。下表是各個角色的權(quán)限,Owner為項(xiàng)目用者行為GuestReportDeveloperMasterOwner創(chuàng)建一個新問題創(chuàng)建一個機(jī)密問題查看機(jī)密問題留言查看工作列表查看工作日志下載和瀏覽工作構(gòu)建查看wiki網(wǎng)頁拉取項(xiàng)目代碼下載項(xiàng)目創(chuàng)建代碼片段問題跟蹤管理標(biāo)簽管理查看提交狀態(tài)查看容器注冊表查看環(huán)境創(chuàng)建一個新環(huán)境使用環(huán)境終端停止環(huán)境查看合并請求列表管理/接收合并請求創(chuàng)建新的合并請求創(chuàng)建分支推送到不受保護(hù)的分支強(qiáng)制推送到不受保護(hù)的分支移除不受保護(hù)的分支添加標(biāo)簽Wiki寫作取消和審查工作創(chuàng)建或更新一個提交狀態(tài)更新注冊容器移除注冊容器鏡像創(chuàng)建一個新的里程碑添加一個團(tuán)隊(duì)成員推送到受保護(hù)分支允許/禁止分支保護(hù)重寫/移除git標(biāo)簽編輯項(xiàng)目添加部署密鑰到項(xiàng)目配置項(xiàng)目鉤子管理在線用戶管理工作觸發(fā)器管理變量管理頁面管理頁面域和證書切換有效級別轉(zhuǎn)移項(xiàng)目到另一個域移除項(xiàng)目強(qiáng)制推送到管理分支移除受保護(hù)分支移除頁面表 31 角色權(quán)限表項(xiàng)目的訪問控制為每個用戶設(shè)置了不同的權(quán)限,哪些用戶可以了解項(xiàng)目,哪些用戶可以查看項(xiàng)目開發(fā)情況,哪些用戶可以獲取源碼并修改等等。有效地控制項(xiàng)目源碼信息,避免重要的技術(shù)細(xì)節(jié)透露給不需要知道的用戶。3。2 gitlab項(xiàng)目版本庫備份gitlab可保證版本庫信息不丟失. gitlab的版本庫是分布式的,每一個經(jīng)過授權(quán)的git用戶都可以從gitlab中克隆項(xiàng)目源碼,盡管本地網(wǎng)絡(luò)出現(xiàn)問題,git用戶都可以提交源碼、查看提交日志、對比版本變更。當(dāng)網(wǎng)絡(luò)正常,可以推送到gitlab版本庫,使用遠(yuǎn)程版本庫與本地版本庫源碼一致.當(dāng)gitlab中的項(xiàng)目不小心刪除了,只需從本地上傳項(xiàng)目版本庫即可,在gitlab中仍可以查看往日的提交日志等各種信息。比較于svn,當(dāng)svn服務(wù)器出現(xiàn)問題,導(dǎo)致開發(fā)者無法提交源碼、查看源碼提交日志等等操作。當(dāng)svn版本庫出現(xiàn)問題,盡管可以上傳原有項(xiàng)目,但會造成版本日志丟失,無法進(jìn)行版本遞歸.圖 3-1描述了版本庫工作原理。開發(fā)者從裝有g(shù)itlab 的公共服務(wù)器拉取項(xiàng)目版本庫,每個版本庫都有獨(dú)立的版本信息,互不影響。當(dāng)需要合并代碼的時候,開發(fā)者給主開發(fā)者提發(fā)送補(bǔ)丁,主開發(fā)者審核代碼后合并代碼,然后提交到遠(yuǎn)程版本庫。公網(wǎng)服務(wù)器出現(xiàn)問題,但不影響各個開發(fā)者版本庫的版本信息,仍可以進(jìn)行版本控制。圖 3-1 版本控制工作原理3.3 gitlab項(xiàng)目版本庫管理在版本庫中,可查看開發(fā)者提交的信息,包括:提交人,提交日期,瀏覽文件內(nèi)容變更。手機(jī)也可以訪問gitlab,隨時查看項(xiàng)目情況.也可以了解每個項(xiàng)目參與者的貢獻(xiàn)統(tǒng)計,每天、每周、每月代碼提交量 。依靠這些信息,可以掌握項(xiàng)目的進(jìn)度,把控風(fēng)險.圖 32 提交信息列表圖 33內(nèi)容變更對比圖 3-4 項(xiàng)目參與者貢獻(xiàn)統(tǒng)計圖 3-5 月度提交量圖 3-6 每周提交量圖 37 每天提交量