今天給大家介紹下google的release train model(俗稱火車發版模型)。大家知道,在公司初創的時候,產品技術人數比較少,版本發布的流程也比較簡單,速度也非常快,只需要那麼一兩個技術骨幹把控好**質量就基本上不會出現太多的問題。
而如果公司進入快速發展階段,產品技術人員迅速擴充套件,產品需求迭代的種類和規模都成倍增加的情況下,之前依賴於個別人的套路可能就會玩不轉了,因為此時產品、開發已經劃分多條線,溝通成本已經變得很高,稍不注意就會出現問題,導致線上問題不斷。這也就是為什麼我們經常會感覺很多創業公司「亂」的原因之一。
當然還有很多其他原因會導致創業公司讓人感覺混亂,這裡不是我們要討論的重點,在本篇文章中,我們主要討論如何讓產品迭代更加高效有序的release train流程。
release train的基本思想
一句話就是「車是按照時間發的,能趕上火車的就一起走,趕不上火車的,就只能等待下一班車了!」,通過這種發布形式確保產品的持續迭代。如何協調好產品、技術、qa等參與方,以及制定合理的時間節點,是確保release trian流程能夠正常運轉的關鍵。
發車時間軸
如果按照每兩周乙個版本的迭代速度,為了確保每趟車都能夠順利發車,在release trian流程上就需要有嚴格的計畫。
在這個時間軸中,很多任務作其實是需要提前做的,在正式上車之前pm需要組織需求評審、開發人員需要根據需求進行功能開發。此時該需求的開發**處於功能開發分支上(具體關於開發**分支管理的內容可以在後面進行討論),如果功能開發完畢,準備搭乘本躺車,就需要嚴格按照圖中的時間軸運轉。
在每週四需要tpm或專案經理組織召開cut meeting會議,及時cut掉無法按照正常節奏上車的需求或功能。一旦cut meeting後,剩下的功能和需求就需要全力確保進度,各需求開發負責人需要在周五前完成**自測並合併至本次發布**版本中,如果無法完成的需要自覺週末加班,確保最晚週日20:00錢完成本次release所有功能的提測。
**分支管理
在整個release trian流程中,在乙個版本的發布流程中,可能會涉及多個開發人員同時並行進行開發,如何確保**不衝突就需要對**分支進行合理的管理。
為了更好的適配整個release trian流程,需要對**分支進行有效地命名,對於需要release的**分支,統一用release/1.1.x 這樣的方式命名,並需要約定相應的許可權。
這裡介紹兩種主要**發布流程:
(一)、新功能開發&release
這是主要的**開發流程,當一名開發人員開始開發乙個新功能時,需要從master上拉取乙個分支字首命名為feature/的開發**分支,並在該分支上完成自己的功能開發及自測工作。
如果該功能需要跟上某躺車,進入乙個release train流程,則需要根據流程中的時間節點,在完成**自測後聯絡相應的release master,這是的release master是指負責負責本躺車涉及的所有公共**工程合併的技術人員。當準備開始一次release train時release master會從master**分支中拉取分支字首為release/1.0.x這樣的發布分支。
之後,功能開發人員提出從feature分支到release分支的merge request,並將assignee指向release master或者所屬專案的owner。release master或者專案owner進行code review,當code review通過後,接受merge request。
至此就完成了流程中各端**的merge工作,如果沒有問題就正式將release分支**提請qa測試。最後,在完成正式線上發布後再將release分支**合併至master分支,本次release train完成!
流程示意圖如下:
(二)、線上問題緊急修復(hotfix)
如果線上發現緊急bug,需要針對線上版本**進行緊急修復的話,需要相應問題責任開發從master拉取字首名為hotfix/的修復分支,當完成**bug修復工作並自測完成後,向線上執行的release版本**發起merge request,與正常流程一樣需要相關的人員進行code review,完成後由release master接受合併,release分支提請qa測試,完成後上線。最後將此次hotfix所產生的**,再次從release分支合併到master分支,以便下一次的release train流程。
流程示意圖如下:
後記
release trian是一種比較有效的發版模型,從流程上來說並不是很複雜,只是用好這種模型,還需要處理好很多細節的內容,即有**工程方面、也有團隊制度、流程等方面的內容。
什麼是模式? 什麼是框架?
1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...
什麼是模式? 什麼是框架?
1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...
什麼是模式,什麼是框架
1 什麼是模式?模式,即pattern。其實就是解決某一類問題的方 你把解決某類問題的方法總結歸納到理論高度,那就是模式。alexander給出的經典定義是 每個模式都描述了乙個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在...