AoneFlow分支管理,開發(fā)流程管理

在 AoneFlow 上你能看到許多其他分支模式的影子。它基本上兼顧了 TrunkBased 的“易于持續(xù)集成”和 GitFlow 的“易于管理需求”特點(diǎn)蒜焊,同時(shí)規(guī)避掉 GitFlow 的那些繁文縟節(jié)。

看一下具體套路科贬。AoneFlow 只使用三種分支類型:主干分支泳梆、特性分支、發(fā)布分支,以及三條基本規(guī)則优妙。

規(guī)則一乘综,開始工作前,從主干創(chuàng)建特性分支鳞溉。

AoneFlow 的特性分支基本借鑒 GitFlow瘾带,沒有什么特別之處。每當(dāng)開始一件新的工作項(xiàng)(比如新的功能或是待解決的問(wèn)題)的時(shí)候熟菲,從代表最新已發(fā)布版本的主干上創(chuàng)建一個(gè)通常以feature/前綴命名的特性分支看政,然后在這個(gè)分支上提交代碼修改。也就是說(shuō)抄罕,每個(gè)工作項(xiàng)(可以是一個(gè)人完成允蚣,或是多個(gè)人協(xié)作完成)對(duì)應(yīng)一個(gè)特性分支,所有的修改都不允許直接提交到主干呆贿。

image

規(guī)則二嚷兔,通過(guò)合并特性分支,形成發(fā)布分支做入。

AoneFlow 的發(fā)布分支設(shè)計(jì)十分巧妙冒晰,可謂整個(gè)體系的精髓。GitFlow 先將已經(jīng)完成的特性分支合并回公共主線(即開發(fā)分支)竟块,然后從公共主線拉出發(fā)布分支壶运。TrunkBased 同樣是等所有需要的特性都在主干分支上開發(fā)完成,然后從主干分支的特定位置拉出發(fā)布分支浪秘。而 AoneFlow 的思路是蒋情,從主干上拉出一條新分支,將所有本次要集成或發(fā)布的特性分支依次合并過(guò)去耸携,從而得到發(fā)布分支棵癣。發(fā)布分支通常以release/前綴命名。

image

這條規(guī)則很簡(jiǎn)單夺衍,不過(guò)實(shí)際的玩法就相當(dāng)豐富了狈谊。

首先,發(fā)布分支的用途可以很靈活沟沙〉某耄基礎(chǔ)玩法是將每條發(fā)布分支與具體的環(huán)境相對(duì)應(yīng),比如release/test分支對(duì)應(yīng)部署測(cè)試環(huán)境尝胆,release/prod分支對(duì)應(yīng)線上正式環(huán)境等等,并與流水線工具相結(jié)合护桦,串聯(lián)各個(gè)環(huán)境上的代碼質(zhì)量掃描和自動(dòng)化測(cè)試關(guān)卡含衔,將產(chǎn)出的部署包直接發(fā)布到相應(yīng)環(huán)境上。進(jìn)階點(diǎn)的玩法是將一個(gè)發(fā)布分支對(duì)應(yīng)多個(gè)環(huán)境,比如把灰度發(fā)布和正式發(fā)布串在一起贪染,中間加上人工驗(yàn)收的步驟缓呛。高級(jí)的玩法呢,要是按迭代計(jì)劃來(lái)關(guān)聯(lián)特性分支杭隙,創(chuàng)建出以迭代演進(jìn)的固定發(fā)布分支哟绊,再把一系列環(huán)境都串在這個(gè)發(fā)布分支的流水線上,就有點(diǎn)經(jīng)典持續(xù)集成流水線的味道了痰憎。再或者做一個(gè)將所有特性分支都關(guān)聯(lián)在一起的發(fā)布分支票髓,專門用于對(duì)所有提交做集成測(cè)試,就玩出了 TrunkBased 的效果铣耘。當(dāng)然洽沟,這些花哨的高級(jí)玩法是我臆想的,阿里的發(fā)布分支一般都還是比較中規(guī)中矩蜗细。

其次裆操,發(fā)布分支的特性組成是動(dòng)態(tài)的,調(diào)整起來(lái)特別容易炉媒。在一些市場(chǎng)瞬息萬(wàn)變的互聯(lián)網(wǎng)企業(yè)踪区,以及采用“敏捷運(yùn)作”的乙方企業(yè)經(jīng)常會(huì)遇到這種情況,已經(jīng)完成就等待上線的需求吊骤,隨時(shí)可能由于市場(chǎng)策略調(diào)整或者甲方的一個(gè)臨時(shí)決定缎岗,其中某個(gè)功能忽然要求延遲發(fā)布或者干脆不要了。再或者是某個(gè)特性在上線前發(fā)現(xiàn)存在嚴(yán)重的開發(fā)問(wèn)題水援,需要排除密强。按往常的做法,這時(shí)候就要來(lái)手工“剔代碼”了蜗元,將已經(jīng)合并到開發(fā)分支或者主干分支的相關(guān)提交一個(gè)個(gè)剔除出去或渤,做過(guò)的同學(xué)都知道很麻煩。在 AoneFlow 的模式下奕扣,重建發(fā)布分支只是分分鐘的事薪鹦,將原本的發(fā)布分支刪掉,從主干拉出新的同名發(fā)布分支惯豆,再把需要保留的各特性分支合并過(guò)來(lái)就搞定池磁。這一系列動(dòng)作能夠在很大程度上實(shí)現(xiàn)自動(dòng)化,而且不會(huì)在倉(cāng)庫(kù)留下一堆剔除代碼的記錄楷兽,干凈無(wú)污染地熄。

此外,發(fā)布分支之間是松耦合的芯杀,這樣就可以有多個(gè)集成環(huán)境分別進(jìn)行不同的特性組合的集成測(cè)試端考,也能方便的管理各個(gè)特性進(jìn)入到不同環(huán)境上部署的時(shí)機(jī)雅潭。松耦合并不代表沒有相關(guān)性,由于測(cè)試環(huán)境却特、集成環(huán)境扶供、預(yù)發(fā)布環(huán)境、灰度環(huán)境和線上正式環(huán)境等發(fā)布流程通常是順序進(jìn)行的裂明,在流程上可以要求只有通過(guò)前一環(huán)境驗(yàn)證的特性椿浓,才能傳遞到下一個(gè)環(huán)境做部署,形成漏斗形的特性發(fā)布流闽晦。阿里有統(tǒng)一平臺(tái)來(lái)自動(dòng)化完成特性組合在發(fā)布分支間的遷移扳碍,在下面講工具的部分里會(huì)再介紹。

規(guī)則三尼荆,發(fā)布到線上正式環(huán)境后左腔,合并相應(yīng)的發(fā)布分支到主干,在主干添加標(biāo)簽捅儒,同時(shí)刪除該發(fā)布分支關(guān)聯(lián)的特性分支液样。

當(dāng)一條發(fā)布分支上的流水線完成了一次線上正式環(huán)境的部署,就意味著相應(yīng)的功能真正的發(fā)布了巧还,此時(shí)應(yīng)該將這條發(fā)布分支合并到主干鞭莽。為了避免在代碼倉(cāng)庫(kù)里堆積大量歷史上的特性分支,還應(yīng)該清理掉已經(jīng)上線部分特性分支麸祷。與 GitFlow 相似澎怒,主干分支上的最新版本始終與線上版本一致,如果要回溯歷史版本阶牍,只需在主干分支上找到相應(yīng)的版本標(biāo)簽即可喷面。

image

除了基本規(guī)則,還有一些實(shí)際操作中不成文的技巧走孽。比如上線后的 Hotfix惧辈,正常的處理方法應(yīng)該是,創(chuàng)建一條新的發(fā)布分支磕瓷,對(duì)應(yīng)線上環(huán)境(相當(dāng)于 Hotfix 分支)盒齿,同時(shí)為這個(gè)分支創(chuàng)建臨時(shí)流水線,以保障必要的發(fā)布前檢查和冒煙測(cè)試能夠自動(dòng)執(zhí)行困食。但其實(shí)還有一種簡(jiǎn)便方法是边翁,將線上正式環(huán)境對(duì)應(yīng)的發(fā)布分支上關(guān)聯(lián)的特性分支全部清退掉,在這個(gè)發(fā)布分支上直接進(jìn)行修改硕盹,改完利用現(xiàn)成的流水線自動(dòng)發(fā)布符匾。如果非得修一個(gè)歷史版本的 Bug 怎么辦呢?那就老老實(shí)實(shí)的在主干分支找到版本標(biāo)簽位置瘩例,然后從那個(gè)位置創(chuàng)建 Hotfix 分支吧待讳,不過(guò)由于阿里的產(chǎn)品大多是線上 SaaS 業(yè)務(wù)芒澜,這樣的場(chǎng)景并不多見。

正是這些簡(jiǎn)單的規(guī)則创淡,組成了 AoneFlow 獨(dú)樹一幟的核心套路。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末南吮,一起剝皮案震驚了整個(gè)濱河市琳彩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌部凑,老刑警劉巖露乏,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異涂邀,居然都是意外死亡瘟仿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門比勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)劳较,“玉大人,你說(shuō)我怎么就攤上這事浩聋」畚希” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵衣洁,是天一觀的道長(zhǎng)墓捻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)坊夫,這世上最難降的妖魔是什么砖第? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮环凿,結(jié)果婚禮上梧兼,老公的妹妹穿的比我還像新娘。我一直安慰自己拷邢,他們只是感情好袱院,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞭稼,像睡著了一般忽洛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上环肘,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天欲虚,我揣著相機(jī)與錄音,去河邊找鬼悔雹。 笑死复哆,一個(gè)胖子當(dāng)著我的面吹牛欣喧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梯找,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼唆阿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锈锤?” 一聲冷哼從身側(cè)響起驯鳖,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎久免,沒想到半個(gè)月后浅辙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阎姥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年记舆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呼巴。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泽腮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伊磺,到底是詐尸還是另有隱情盛正,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布屑埋,位于F島的核電站豪筝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏摘能。R本人自食惡果不足惜续崖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望团搞。 院中可真熱鬧严望,春花似錦、人聲如沸逻恐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)复隆。三九已至拨匆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挽拂,已是汗流浹背惭每。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亏栈,地道東北人台腥。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓宏赘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親黎侈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子察署,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在分享開始前... Hello, World! I am Tristan. (特里斯譚) 喜歡和優(yōu)秀的人做挑戰(zhàn)的事...
    特里斯譚閱讀 6,336評(píng)論 2 51
  • 純手工打造每一篇開源資訊與技術(shù)干貨箕母,數(shù)十萬(wàn)程序員和Linuxer已經(jīng)關(guān)注 1 Git 分支 - 分支簡(jiǎn)介 有人把 ...
    塵世不擾閱讀 711評(píng)論 0 3
  • 一只活力四射、雄赳赳俱济、氣昂昂的從來(lái)沒有想過(guò)自己會(huì)變成一碗雞湯的雞,就這樣被端到了桌上钙勃。 扒皮去骨蛛碌,輔以蔥、姜辖源、棗蔚携,...
    新西閱讀 145評(píng)論 0 0
  • 我們一生當(dāng)中酝蜒,花了許許多多的時(shí)間在討厭人上面。 小時(shí)候矾湃,媽媽說(shuō):你和妹妹誰(shuí)不聽話亡脑,我就不對(duì)她好;于...
    杏子秋閱讀 224評(píng)論 0 0
  • 餃子邀跃,是我最喜愛的食物霉咨。 皮兒里包著餡兒,一口咬下去不單一拍屑,這樣吃下去打心眼里感覺到滿足途戒。 餃子吃法也多,我最愛煎...
    聊個(gè)二毛閱讀 396評(píng)論 1 2