華為如何實現基于Git的跨地域協同開發

跨地域開發的需求其實由來已久,在IT/互聯網發展的早期就已存在,只不過限于當時網絡環境的因素,無法在線上有效的完成協同工作,所以沒法實際開展。而隨著近十年網絡的快速發展,跨地域協同開發線變得可能而且越來越普遍,尤其是在大公司內部。

同時隨著行業的發展,敏捷開發模式的不斷推廣,軟件交付和更新的速度越來越快,特別是移動互聯網產品,幾乎每天都有更新。所以在這種背景下,如何保證在跨地域協同開發場景下產品的快速迭代和交付成為各IT/互聯網公司不斷探索的內容。

跨地域協同開發的痛點

華為公司目前在全球各地共有16個研究所,跨地域協同開發場景非常普遍。就拿軟件開發云團隊為例,目前團隊成員分布在北京、大連、深圳和成都四個城市,每天的開發都出處于跨地域協同開發的狀態。

相信大家可以列舉出不少跨地域協同開發場景下的用戶痛點,這里基于個人經驗和理解,列舉了四個跨地域協同開發的核心痛點:

·需求溝通:需求的溝通是矩陣交叉式的,再加上跨地域,難度系數倍增;

·版本控制:包括代碼版本和代碼質量控制;

·項目管理:包括項目階段和任務的劃分,需求和Bug的管理;

·聯調:主要是Bug的聯調

華為的實踐與解決方案

那么如何才能有效的解決上述的用戶痛點呢?這里給大家分享一些華為的內部經驗,這些經驗也是華為不斷吸收先進研發理念,并經過自身實踐,改進和優化而來。

首先我們是找到解決問題的方法,其中主要結合了敏捷開發模式的理念,列舉如下圖所示:

有了方法其次是找到合適的工具,所謂“工欲善其事必先利其器”,有了合適的工具再加上正確的方法將會達到事半功倍的效果,基于上述介紹的方法這里列舉三個主要的工具如下圖所示:

上述工具中我將重點介紹基于Git的版本控制工具,那么為什么選擇Git,而不是SVN或者其他工具。應該大家對Git都很熟悉,百科里是這么描述Git的:Git是一款免費、開源的分布式版本控制系統,用于敏捷高效地處理任何或大或小的項目。我想說得是Git就是為跨地域協同開發場景而生,它是解決跨地域協同開發問題的一個利器。為什么這么說,大家可以看看PPT當中我列舉的Git的一些主要特性,這就是我們選擇Git的原因。

下面我將通過分享兩個版本控制工具的實際使用示例來闡述我們是如何解決跨地域協同開發的問題。

示例一:

當項目立項后,我們首先會在服務器端創建原始的代碼倉庫,然后各地域開發者在本地執行git clone指令先將服務器端代碼倉庫克隆至本地,再根據對應的開發需求執行git checkout指令創建自己的開發分支,開發過程中各地域開發者互不影響。

開發完成后執行git add和git commit指令將代碼提交至本地,提交測試并通過后再執行git push指令向項目負責人提交推送代碼至服務器端代碼的合并請求,如果通過則代碼將推送至服務器端,否則打回,開發者需做相應修改后再提交合并請求。具體的流程示意圖如下圖所示:

通過該示例,我們可以看到版本控制工具實現了離線開發、代碼審核特性,解決了跨地域協同開發中代碼質量和編碼協同的問題。此外通過上述方式,代碼安全性也得到提升,比如服務器端出現異常導致代碼丟失,這時我們可以通過各地域開發者本地的代碼庫恢復服務器端代碼庫。

示例二:

項目代碼倉庫創建時,默認為Master主干分支,其特征是穩定且主要用于發布產品版本。而針對開發過程,我們會創建一個develop的開發分支,然后各地域開發團隊根據各自開發需求創建不同的開發分支。

比如北京的團隊開發FeatureA功能,將從Develop分支拉取一個FeatureA的開發分支;深圳的團隊開發FeatureB功能,則會從Develop分支拉取一個FeatureB的開發分支。兩個開發分支互不影響。每個開發分支開發完成后合并至Develop分支執行測試,測試通過后再合并至master主干。

完成某個里程碑后我們在Master主干上打上V1.0.1標簽,并作為發布版本發布。標簽為只讀權限,防止開發者誤將代碼提交至發布版本。

版本發布上線后,如果發現Bug,開發團隊需要緊急修復,首先從V1.0.1標簽處拉取一個V1.0.1SP1的補丁分支,然后在該分支上修復代碼,測試通過后再合入Master分支,并打上V1.0.1SP1的標簽。同時,為了保證補丁版本修改的代碼及時合入到開發環境,開發團隊需要將V1.0.1SP1分支合入到Develop分支。

具體操作示意圖如下圖所示:

此外我們可以通過如下的倉庫網絡圖有效的查看各分支間的關系以及提交歷史,便于版本控制和問題追溯。

通過這個示例,我們可以看到版本控制工具可以支持靈活的分支策略和標記版本里程碑的特性,解決了跨地域協同開發中特別重要的問題就是版本控制。

除上述兩個示例外,跨地域協同開發過程中不可避免的會遇到代碼安全性的問題,那么如何有效保障代碼倉庫的安全性,這里主要介紹如下兩點經驗:

·權管理限:只有項目負責人才可以創建和刪除代碼倉庫,開發者推送代碼至服務器端代碼倉庫,需要項目負責人做代碼評審

·安全白名單訪問限制:配置IP白名單,只有在白名單列表的IP地址用戶才可以正常訪問倉庫

結合上述方法和工具,華為將自身的經驗抽象成服務,依托Git提供了支撐跨地域開發的版本協同服務,并與項目管理服務拉通,服務于內外部研發團隊。該服務不但有效的嵌入到DevOps的全流程服務(項目管理、配置管理、代碼檢查、編譯構建、測試、部署、發布和持續交付流水線)中,構建了DevOps一站式解決方案,也能作為獨立服務(DevCloud配置管理服務)提供給企業研發團隊使用。

總結

總的來看,使用工具可以有效提升跨地域協同開發場景的效率與質量,但工具一般需要購買或者企業自己研發,成本都較高。而借助華為軟件開發云,開發者和企業將不需要花費成本購買工具或花費人力成本研發工具,只需專注于產品的研發,實現持續集成、持續交付和快速迭代的目標。

華為軟件開發云(DevCloud)是集華為研發實踐、前沿研發理念、先進研發工具為一體的研發云平臺,為開發者提供研發工具云服務,讓軟件開發簡單高效。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容

  • 這篇博文是自己在學習git過程中的思考總結。本文僅僅代表個人的看法,如有不妥地方還請本文文末留言。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,097評論 4 18
  • Git的使用以及Git協同工作流的選擇 [TOC] 為什么要使用Git Git 是一個分布式的版本管理工具,而且可...
    ghostdemon閱讀 691評論 0 0
  • 一、基本概念: 注:對于git的分布式概念及其優點,不重復說明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大廠offer閱讀 1,440評論 0 3
  • 今天,是我第一次在簡書上寫作,真的不知道寫什么好。 家里就我一個人,吃了些飯,喝了幾杯茶,聽了會“今天學點兒什么”...
    ol大閱讀 250評論 1 1
  • 最近逛街發現,買東西的人都在超市,服裝、餐飲等行業收入慘淡,這是“互聯網+”的淘汰規則,還是大家都熱衷于網...
    國金社閱讀 207評論 0 0