背景
敏捷軟件開發中,越小的反饋環,意味着軟件質量越容易得到保證。
作為組件團隊,我們的開發任務中,往往存在一些特性涉及到幾十個功能點,開發周期持續數周或數月的情況。如何在開發過程中保證軟件質量,是個很重要的話題。進行有效的細粒度的代碼評審,是常見的手段之一。但是這一希望在落地時,多多少少會遇到些來自方方面面的阻力:
Review Board不支持Git branch的代碼評審提交;
Git不熟,不知道怎么生產正確的patch文件來提交到Review Board上;
Review Board不會用,不知道怎么提交代碼評審;
Review Board會用,但是提交過程繁瑣,一兩天就要提交一次,我怕麻煩;
我忘提交了代碼評審了
團隊的痛點就是我們努力改進的方向,我們希望有一套方案,能實現代碼評審的自動提交,提交過程對開發人員透明,最大程度上減輕開發人員的心智負擔,讓開發人員專注於功能開發上。
實際上,這個自動化工具和實現方案已經有了,這就是本文分享的RBTool。官網的用戶手冊有詳細的文檔說明,美中不足的是,沒有提供一個完整的實施案例給用戶參考,本文嘗試填補這一塊空白,疏漏之處,還望指正。
安裝
本文主要關注Review Board代碼評審自動提交的方案實施上,所以假設你已經有了一台可用的Review Board(后文以RB簡稱)服務器。RB服務器的安裝、配置、使用不在贅述。
部署環境:
alex@alex-desktop:~/git/team_dev$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 10.04.3 LTS Release: 10.04 Codename: lucid
安裝RBTool:
如果你的計算機能訪問外網,安裝過程很簡單:
sudo easy_install -U RBTools
如果不能訪問外網,需要手動下載如下安裝包,並依次解壓、運行 sudo python setup.py install 進行安裝。
https://pypi.python.org/packages/source/a/argparse/argparse-1.4.0.tar.gz
https://pypi.python.org/packages/source/s/six/six-1.8.0.tar.gz
https://pypi.python.org/packages/source/R/RBTools/RBTools-0.7.5.tar.gz
運行如下命令,查看是否安裝成功:
alex@alex-desktop:~/git/team_15000_dev$ rbt -v RBTools 0.7.5
配置
配置git選項reviewboard.url為你的RB服務器訪問鏈接:
git config --global reviewboard.url http://XXX.XXX.XXX.XXX/
在你的git工作區目錄下,創建RBTool的配置文件.reviewboardrc,示例如下(個人信息以XXX代替)
alex@alex-desktop:~/git/team_dev$ cat .reviewboardrc REPOSITORY = "XXX" REVIEWBOARD_URL = "http://XXX.XXX.XXX.XXX/" USERNAME = "XXX" PASSWORD = "XXX" TARGET_GROUPS = "CalabashBro" TRACKING_BRANCH = "origin/XXX"
Repository:指定RB服務器中已經配置的repository倉庫名;
REVIEWBOARD_URL:指定RB服務器訪問鏈接;
USERNAME:指定RB服務器的用戶登錄名;
PASSWORD:指定RB服務器的用戶登錄密碼;
TARGET_GROUPS:指定代碼評審Review request的Groups;
TRACKING_BRANCH:指定工作分支;若不指定,默認為origin/master分支;(適用於Git)
配置Git commit鈎子腳本(如不需要自動提交代碼評審功能,此步可以跳過):
alex@alex-desktop:~/git/team_dev/.git/hooks$ touch post-commit
alex@alex-desktop:~/git/team_dev/.git/hooks$ chmod +x post-commit
alex@alex-desktop:~/git/team_dev$ cat .git/hooks/post-commit
#!/bin/sh
rbt post -g -p
參數解釋:
-g:根據git commit日志自動構造RB Review request的summary信息和description信息;
-p:自動構造和發布;如未指定,會構造一個RB Review request頁面,但不會發布。
應用
如果配置了Git commit鈎子腳本,commit代碼時,就會自動觸發提交一條RB Review request:
alex@alex-desktop:~/git/team_dev$ git commit -m 'Demo: auto to submit RB review request' Review request #6140 posted. http://10.46.74.230/r/6140/ http://10.46.74.230/r/6140/diff/ [gaoyun d461499] Demo: auto to submit RB review request 2 files changed, 6 insertions(+)
自動提交的RB Review request截圖:

如果沒有配置Git commit鈎子腳本,也可以在commit后,利用rbt手動提交RB Review request,比如:
指定REVISION的修改記錄提交代碼評審:
rbt post REVISION
指定(STARTREV,STOPREV]區間的修改記錄提交代碼評審:
rbt post STARTREV STOPREV
把當前未push的修改更新到已提交的代碼評審請求中:
rbt post -r REVIEW_REQUEST_NUM
其他命令請參照官網的用戶手冊。
祝玩的開心。
--EOF--
