效能提升的江湖路-轉轉Beetle平台百天記
題外話
效能提升是個火熱的話題,CI,容器技術,DevOps,還有很多筆者不知道的熱門技術和話題,無非是希望通過技術手段來加強產品的研發效率及發布質量。簡單明了的目標,卻需要長期的學習探索,實踐,總結,和修正,在這個過程中逐步的定義管控目標,流程和方法,最終實踐。
在轉轉,高發布頻率及高並行開發是常態,這使得自動化效率提升顯得更為重要。
Beetle簡介
Beetle是轉轉公司測試部主導研發的一款基於gitlab,jenkins,maven為主的輕量級效率平台,平台主要功能包含源碼的版本管理,編譯管理及發布管理,同時提供代碼的diff,codereview,測試覆蓋率等功能;目前支持公司所有研發團隊的日常發布工作;beetle平台用流水式發布的交互設計,簡單的後台處理邏輯以實現簡單快速發布的目標。
1
Beetle內嵌的開發流程
從源碼到上線的全鏈路生命周期管理
各節點均實現自動化
開發模式閉環流程
2
Beetle平台的工程管理
新建工程
調用gitlab api,直接在beetle平台中新建gitlab project
集成分支開發模式
我們採用了部分git flow的形式,並沒有完全按照git flow的方式進行管理,這種模式將統一通過集成分支構建產生的版本來進行發布上線,上線成功後自動將集成分支構建上線版本的tag代碼同步到master做穩定備份。
分支開發模式
並行開發,串列上線,通過功能分支構建的版本來發布上線,上線成功後會自動將功能分支上線的版本對應的tag代碼同步到master做穩定備份,並且給其它並行開發當中的分支發送合併提醒,系統提供自動merge功能。
Beetle平台的源碼構建
Beetle的構建直接調用jenkins的api,通過config.xml模板文件動態生成jenkins job,實現工程構建,job配置更新,job刪除,日誌查看等功能;修改完源碼之後可直接點擊編譯按鈕觸發構建,生成構建結果(每個分支都有各自的構建job)。
Beetle平台的部署
調用環境平台提供的介面,點擊部署後,可選擇部署的目標機器,直接點擊確定後生成部署記錄(目前我們還沒有將部署環節完全容器化,這也是平台後續的一個努力方向)。
在平台點擊上線後直接部署線上環境,包含回滾歷史版本和快速回滾的功能。
3
Beetle平台其他功能
自助服務
用戶可自行在平台管理許可權申請及審批功能,許可權申請審批後自動開放,在許可權管理中做到自運轉。
code diff
點擊編譯記錄中的code diff操作,會根據gitlab的commit id進行代碼diff。
code review
可以在工程的配置中進行CI自定義配置,如code review,CI的配置項可以根據節點進行控制,並可以控制是否阻斷整個上線流程。
配置後可在分支列表中發起code review。
總結
Beetle平台結合了部分的CI實踐,還有部分CI實踐在落實中,目前公司有200+的工程在beetle上進行日常的構建和發布工作,整個過程全部自動化,beetle平台的學習和使用成本非常低,所以對於用戶來說達到了使用簡單的目的;在整個發布上線的流程中,我們會陸續增加CI實踐及一些關鍵節點的控制,並加速容器技術的落地,以持續提成產品發布效率及發布質量。
TAG:轉轉QA |