我們如何改造Gitlab莊表偉課件_第1頁
我們如何改造Gitlab莊表偉課件_第2頁
我們如何改造Gitlab莊表偉課件_第3頁
我們如何改造Gitlab莊表偉課件_第4頁
我們如何改造Gitlab莊表偉課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

我們如何改造Gitlab?我們如何改造Gitlab?1背景介紹Aboutme2005:開始接觸RubyonRails2006~2009:擔任印客網技術總監(jiān),開始在商業(yè)環(huán)境中使用Rails2009~2012:加入盛大創(chuàng)新院,基于Redmine,搭建Teamhost開源平臺2013-11:加入華為,負責華為內源平臺項目,擔任架構師AbouttheprojectiSource:華為內部開源平臺(InnerSource)2014-09-11:上線運營至今,注冊用戶數,超過11萬基于Gitlab:在Gitlab上進行了長達3年的深度開發(fā),走過彎路,也大有收獲背景介紹AboutmeAbouttheproject2技術決策的來龍去脈如何平衡需求與目標之間的差異?如何平衡效率與品質之間的矛盾?如何平衡習慣與創(chuàng)新之間的沖突?技術決策的來龍去脈如何平衡需求與目標之間的差異?3最初的技術選型為啥我們會選擇這條艱難的道路?最初的技術選型為啥我們會選擇這條艱難的道路?4我們需要一個輕量級、分布式、可定制的項目托管平臺GithubEnterprise完全自研基于開源項目二次開發(fā)RedmineGitlab采購一個商業(yè)產品+源代碼已經進行了分布式改造包含一些我們需要的擴展特性:積分體系、CMS、Groups附帶合同,能夠有熟悉Gitlab的開發(fā)力量投入GerritOpenGrok這是一個正確的決策嗎?我們需要一個輕量級、分布式、可定制的項目托管平臺Github5多中心架構改造多倉工作流改造改進CodeReview插件化改造更多探索我們對Gitlab的改造多中心架構改造我們對Gitlab的改造6多中心架構改造被逼出來的業(yè)界領先??多中心架構改造被逼出來的業(yè)界領先??7從單中心到多中心從單中心到多中心8華為公司在全球有幾十家研究機構,研發(fā)人員遍布世界各地一個大型項目的研發(fā)人員,數量超過2K,同樣全球分布深圳本地研發(fā)人員,下載深圳數據中心的代碼:每秒8~10M,非常滿意西安當地研發(fā)人員,下載深圳數據中心的代碼:每秒200~500K,欲哭無淚大型項目的倉庫大小,甚至超過50G……多數據中心架構改造,迫在眉睫!僅僅單中心分布式是不夠的華為公司在全球有幾十家研究機構,研發(fā)人員遍布世界各地僅僅單9從單中心到多中心從單中心到多中心10多倉工作流改造單倉50G!這樣下去不行啊……??多倉工作流改造單倉50G!這樣下去不行啊……??11基于Fork的Git工作流

服務器端的存儲壓力:一開始還好,后面的問題會越來越多

客戶端的操作復雜度:fork一個倉庫,還算比較方便。假如要同時fork一百個倉庫呢?

分倉聯(lián)動:最初基于Submodule的嘗試●自動同步fork●自動同步創(chuàng)建新的分支●自動同步發(fā)起MergeRequest

●自動同步合入/關閉MergeRequest●復雜得沒完沒了……基于Fork的Git工作流服務器端的存儲壓力:一開始還好,12GerritOMEGAGerritOMEGA13Gerritvs.OMEGAGerritvs.OMEGA14??改進CodeReview繼續(xù)向Gerrit學習??改進CodeReview繼續(xù)向Gerrit學習15最早走過的彎路基于Gitlab,集成Gerrit,從MergeRequest到GerritChange

在服務器端復制一份git倉庫

在服務器端構造Change-Id

將Gitlab的權限體系,映射到Gerrit

自動更新changeset

回填Gerrit結果最早走過的彎路基于Gitlab,集成Gerrit,從Mer16引入Gerrit的核心價值?Nofork、Nofeaturebranch、Multi-repo?已經通過OMEGA得以繼承

?圍繞CodeReview建立的工作流

?工具檢查、人工審核、Committer批準

?評分機制:+2/+1/0/-1/-2?需要在iSource實現(xiàn)類似的評分機制

?開放API,允許工具評分

?改造界面,實現(xiàn)打分

?增加項目設定,設置合入MR的最低得分引入Gerrit的核心價值?Nofork、Nofe17??如何改好開源項目?破解每個團隊都會困擾的難題??如何改好開源項目?破解每個團隊都會困擾的難題18Gitlab發(fā)布頻率

從2015-09-22發(fā)布8.0.0到2017-09-06發(fā)布9.5.4,一共發(fā)布248個正式版本!

平均三天不到,發(fā)布一個小版本

平均24天,發(fā)布一個大版本:x.x.0充滿活力的開源社區(qū),對于打算二次開發(fā)的團隊而言,是一項巨大的挑戰(zhàn)!跟著走:累!不跟:眼饞!Gitlab發(fā)布頻率從2015-09-22發(fā)布8.0.019iSource的早期策略?以我為主,兼容并蓄?大量的特性,外部開源社區(qū),不會去做?分布式架構改造,已經讓我們離Gitlab越來越遠了?Gitlab的發(fā)展路線,相當隨意,沒啥章法?我們看過Gitlab的源代碼,感覺水平很一般?圍繞Gitlab改動的內容?按照游戲化管理的思路,建立了一套積分體系?增強的權限管理體系?增強的分支管理模式?增強的issue處理流程?增強的CodeReview流程iSource的早期策略?以我為主,兼容并蓄20向Redmine學習添加config/initializers/0_plugins.rb添加lib/gitlab/plugin.rb添加lib/task/plugin.rb修改config/initializers/assets.rb修改config/routes.rb修改Gemfile添加plugins/下的N個插件目錄,放置init.rb文件向Redmine學習添加config/initialize21基于插件機制的自動化升級腳本創(chuàng)建獨立的gitlab_plus項目執(zhí)行build.sh-v9.5.2下載指定版本代碼修改指定位置的代碼CopyPlugins

Codedockerbuild最新版的gitlab(修改后的Dockerfile)docker-composeup任何時候gitlab新出,可以實現(xiàn)一鍵升級,并合入最新代碼基于插件機制的自動化升級腳本創(chuàng)建獨立的gitlab_plus22Gitlab插件化的價值以盡可能無損的方式,隨時追蹤Gitlab最新版本通過調整插件,可以同時開發(fā)適應內外不同需求的版本爭取將這個架構,貢獻到社區(qū)向Eclipse學習Gitlab插件化的價值以盡可能無損的方式,隨時追蹤Git23更多探索以及可能的發(fā)展方向更多探索以及可能的發(fā)展方向24基于瀏覽器插件的擴展方案目前只開發(fā)Chrome版本的插件基于FireBreath,支持其他瀏覽器也很簡單在瀏覽器端,可以動態(tài)修改web頁面,添加頁面元素例如:直接調用BeyondCompare比較代碼Github也在做類似的事情基于瀏覽器插件的擴展方案目前只開發(fā)Chrome版本的插件25基于MS-GVFS的探索/Microsoft/GVFS/zhuangbiaowei/grack-with-gvfs基于MS-GVFS的探索26Gitlab將會走向何方?從模仿走向創(chuàng)新從小型企業(yè)

中型企業(yè)大型企業(yè)從單一代碼托管走向上下游通吃我們的選擇是……幫助它更好的成長!Gitlab將會走向何方?從模仿走向創(chuàng)新27Thanks!Anyquestions?Thanks!Anyquestions?28多說一句……多說一句……29我們如何改造Gitlab?我們如何改造Gitlab?30背景介紹Aboutme2005:開始接觸RubyonRails2006~2009:擔任印客網技術總監(jiān),開始在商業(yè)環(huán)境中使用Rails2009~2012:加入盛大創(chuàng)新院,基于Redmine,搭建Teamhost開源平臺2013-11:加入華為,負責華為內源平臺項目,擔任架構師AbouttheprojectiSource:華為內部開源平臺(InnerSource)2014-09-11:上線運營至今,注冊用戶數,超過11萬基于Gitlab:在Gitlab上進行了長達3年的深度開發(fā),走過彎路,也大有收獲背景介紹AboutmeAbouttheproject31技術決策的來龍去脈如何平衡需求與目標之間的差異?如何平衡效率與品質之間的矛盾?如何平衡習慣與創(chuàng)新之間的沖突?技術決策的來龍去脈如何平衡需求與目標之間的差異?32最初的技術選型為啥我們會選擇這條艱難的道路?最初的技術選型為啥我們會選擇這條艱難的道路?33我們需要一個輕量級、分布式、可定制的項目托管平臺GithubEnterprise完全自研基于開源項目二次開發(fā)RedmineGitlab采購一個商業(yè)產品+源代碼已經進行了分布式改造包含一些我們需要的擴展特性:積分體系、CMS、Groups附帶合同,能夠有熟悉Gitlab的開發(fā)力量投入GerritOpenGrok這是一個正確的決策嗎?我們需要一個輕量級、分布式、可定制的項目托管平臺Github34多中心架構改造多倉工作流改造改進CodeReview插件化改造更多探索我們對Gitlab的改造多中心架構改造我們對Gitlab的改造35多中心架構改造被逼出來的業(yè)界領先??多中心架構改造被逼出來的業(yè)界領先??36從單中心到多中心從單中心到多中心37華為公司在全球有幾十家研究機構,研發(fā)人員遍布世界各地一個大型項目的研發(fā)人員,數量超過2K,同樣全球分布深圳本地研發(fā)人員,下載深圳數據中心的代碼:每秒8~10M,非常滿意西安當地研發(fā)人員,下載深圳數據中心的代碼:每秒200~500K,欲哭無淚大型項目的倉庫大小,甚至超過50G……多數據中心架構改造,迫在眉睫!僅僅單中心分布式是不夠的華為公司在全球有幾十家研究機構,研發(fā)人員遍布世界各地僅僅單38從單中心到多中心從單中心到多中心39多倉工作流改造單倉50G!這樣下去不行啊……??多倉工作流改造單倉50G!這樣下去不行啊……??40基于Fork的Git工作流

服務器端的存儲壓力:一開始還好,后面的問題會越來越多

客戶端的操作復雜度:fork一個倉庫,還算比較方便。假如要同時fork一百個倉庫呢?

分倉聯(lián)動:最初基于Submodule的嘗試●自動同步fork●自動同步創(chuàng)建新的分支●自動同步發(fā)起MergeRequest

●自動同步合入/關閉MergeRequest●復雜得沒完沒了……基于Fork的Git工作流服務器端的存儲壓力:一開始還好,41GerritOMEGAGerritOMEGA42Gerritvs.OMEGAGerritvs.OMEGA43??改進CodeReview繼續(xù)向Gerrit學習??改進CodeReview繼續(xù)向Gerrit學習44最早走過的彎路基于Gitlab,集成Gerrit,從MergeRequest到GerritChange

在服務器端復制一份git倉庫

在服務器端構造Change-Id

將Gitlab的權限體系,映射到Gerrit

自動更新changeset

回填Gerrit結果最早走過的彎路基于Gitlab,集成Gerrit,從Mer45引入Gerrit的核心價值?Nofork、Nofeaturebranch、Multi-repo?已經通過OMEGA得以繼承

?圍繞CodeReview建立的工作流

?工具檢查、人工審核、Committer批準

?評分機制:+2/+1/0/-1/-2?需要在iSource實現(xiàn)類似的評分機制

?開放API,允許工具評分

?改造界面,實現(xiàn)打分

?增加項目設定,設置合入MR的最低得分引入Gerrit的核心價值?Nofork、Nofe46??如何改好開源項目?破解每個團隊都會困擾的難題??如何改好開源項目?破解每個團隊都會困擾的難題47Gitlab發(fā)布頻率

從2015-09-22發(fā)布8.0.0到2017-09-06發(fā)布9.5.4,一共發(fā)布248個正式版本!

平均三天不到,發(fā)布一個小版本

平均24天,發(fā)布一個大版本:x.x.0充滿活力的開源社區(qū),對于打算二次開發(fā)的團隊而言,是一項巨大的挑戰(zhàn)!跟著走:累!不跟:眼饞!Gitlab發(fā)布頻率從2015-09-22發(fā)布8.0.048iSource的早期策略?以我為主,兼容并蓄?大量的特性,外部開源社區(qū),不會去做?分布式架構改造,已經讓我們離Gitlab越來越遠了?Gitlab的發(fā)展路線,相當隨意,沒啥章法?我們看過Gitlab的源代碼,感覺水平很一般?圍繞Gitlab改動的內容?按照游戲化管理的思路,建立了一套積分體系?增強的權限管理體系?增強的分支管理模式?增強的issue處理流程?增強的CodeReview流程iSource的早期策略?以我為主,兼容并蓄49向Redmine學習添加config/initializers/0_plugins.rb添加lib/gitlab/plugin.rb添加lib/task/plugin.rb修改config/initializers/assets.rb修改config/routes.rb修改Gemfile添加plugins/下的N個插件目錄,放置init.rb文件向Redmine學習添加config/initialize50基于插件機制的自動化升級腳本創(chuàng)建獨立的gitlab_plus項目執(zhí)行build.sh-v9.5.2下載指定版本代碼修改指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論