本博客內容,除非申明轉載,其余皆為原創。碼字辛苦,轉載請注明出處:http://www.mrxneb.tw/spec-dog/

研發團隊如何借助Gitlab來做代碼review

代碼review是代碼質量保障的手段之一,同時開發成員之間代碼review也是一種技術交流的方式,雖然會占用一些時間,但對團隊而言,總體是個利大于弊的事情。如何借助現有工具在團隊內部形成代碼review的流程與規范,是team leader或技術管理者需要考慮的問題。本文分享一種基于Gitlab代碼merge流程的code review方法,以供參考與探討。如有更好的方法,歡迎交流。

1. 設置成員角色

首先需要對你團隊的成員分配角色,在Gitlab groups里選擇一個group,然后左邊菜單欄點擊 Members,可在 Members 頁面添加或編輯成員角色,如下圖所示。

group成員

 

其中角色包含如下幾類:

  • Guest:權限最小,基本查看功能
  • Reporter:只能查看,不能push
  • Developer:能push,也能merge不受限制的分支
  • Master:除了項目的遷移、刪除等管理權限沒有,其它權限基本都有
  • Owner:權限最大,包括項目的遷移、刪除等管理權限

詳細權限參考: https://docs.gitlab.com/ee/user/permissions.html

確定團隊中技術水平、經驗較好的成員為Master,負責代碼的review與分支的合并;其他成員為Developer,提交合并請求,接受review意見;Master之間可以互相review。

 

2. 配置分支保護

在項目頁面左側菜單欄 Settings -> Repository, 進入“Protected Branches”部分配置分支保護,如下圖所示。

分支保護

在這里可以針對每個分支,設置允許什么角色可以merge,允許什么角色可以push,選項包括三個:“Masters”, “Developers + Masters”, “No one”。這里設置成只允許master可以直接push與merge這幾個常設分支的代碼。(如果更嚴格一點,可以將“Allowed to push”設置成“No one”)

 

3. 代碼review流程

3.1. 開發(開發者負責)

  1. 本地切到develop分支, 拉取最新代碼(相關命令如下,GUI工具操作自行查相關文檔)
    git branch #查看當前位于哪個分支,前面打星號即為當前分支
    git checkout develop   #切換到develop分支
    git pull  #拉取最新代碼
  1. 從develop分支切出子分支
    git checkout -b feature-1101  #從當前分支切出子分支,命名為"feature-1101"
  1. 編碼、本地自測完之后,提交子分支到遠程倉庫
    git add *  #加入暫存區
    git commit -m "commit msg" #提交到本地倉庫
    git push origin feature-1101 #提交到遠程倉庫

 

3.2 發起Merge請求(開發者負責)

 

  1.  在項目主頁面,依次點擊左側“Merge Requests”(下圖1),“New merge request”(下圖2),打開新建Merge請求頁面3.2 發起Merge請求(開發者負責)

Merge請求

 

  1. 在新建Merge請求頁面,選擇merge的源分支,及目標分支,如下圖源分支為“feature-1101”,目標分支為“develop”,點擊“Compare branches and continue”按鈕進入對比與提交頁面

新建Merge請求

 

  1. 在對比與提交頁面,可以點擊“Changes” tab查看本次修改(這里我為了演示,只是加了兩個換行),確認無誤,點擊“Submit merge request”按鈕,提交merge請求

對比修改

  1. 提交之后,將結果頁面的瀏覽器地址發到團隊即時通訊群(如釘釘),并@相應的同事申請review

3.3 代碼Review(code reviewer負責)

  1. 負責代碼Review的同事收到申請后,點擊merge請求地址,打開頁面,查看“Changes”。這里可通過“Inline”單邊查看,也可以通過“Side-by-side”兩個版本對比查看

對比修改

 

  1. review完成后,若無問題,則可點擊”Merge”按鈕完成merge,同時可刪除對應的子分支“feature-1101”;若有問題,則可點擊“Close merge request”按鈕關閉該merge請求(也可以不關閉復用該merge請求),同時通知開發者進行相應調整,重新提交代碼發起merge請求(如果之前沒關閉merge請求,則刷新即可看到調整)。

3.4 沖突解決(開發者負責)

  1. merge的時候,可能存在代碼沖突,這時,開發者可從develop分支重新拉取最新代碼進行本地merge, 解決沖突后重新提交代碼進行review
    git pull origin develop #在當前子分支拉取develop分支的最新代碼進行本地merge
    
    # 解決沖突代碼
    
    # 提交
    git add *
    git commit -m "fix merge conflict"
    git push origin feature-1101
  1. 自行解決不了時,尋求協助

 

4. 借助阿里釘釘機器人來改善體驗

前面流程中提醒code reviewer是需要開發者自己來發消息通知的,可不可以把這個流程自動化。我們可以借助Gitlab的webhook與釘釘機器人來實現。

  1. 在釘釘群右上角點擊“…”,打開群設置,群機器人中點擊添加機器人,會顯示可以添加的機器人類型,如下圖所示

釘釘機器人

  1. 選擇Gitlab,點擊添加,輸入機器人名稱,如“Gitlab”,點擊完成即創建了一個Gitlab的釘釘機器人。回到“群機器人”窗口,將能看到剛剛創建的Gitlab機器人,如圖

釘釘機器人列表

      點擊齒輪按鈕,進入設置頁,可看到webhook地址,點擊復制,復制該機器人的webhook地址。如圖

釘釘機器人webhook

  1. 在Gitlab項目主頁進入 Settings -> Integrations, 將前面復制的webhook地址填入URL中,Trigger 部分選擇“Merge request events”(不要勾太多,不然提醒太多就有點騷擾了),然后點擊“Add webhook”就完成了。如圖

GitlabWebhook

  1. 當有開發人員提交merge請求時,釘釘機器人將在釘釘群里發出通知,code reviewer點擊消息里的鏈接即可進入頁面進行code review, review完成,將分支merge之后,釘釘機器人也會發出消息(所有merge相關的事件都會發出消息)。如圖

釘釘機器人通知

 

5. 總結

團隊協作,流程、規范很重要,不同的團隊可能有不同的適用流程與規范。此文分享了基于Gitlab與阿里釘釘群機器人的代碼review流程,希望對團隊研發協作有一定參考價值,也歡迎一起探討、交流。





我的個人博客地址:http://blog.jboost.cn
我的頭條空間: https://www.toutiao.com/c/user/5833678517/#mid=1636101215791112
我的github地址:https://github.com/ronwxy
我的微信公眾號:jboost-ksxy

————————————————————————————————————————

微信公眾號
歡迎關注我的微信公眾號,及時獲取最新分享

posted @ 2019-06-19 10:50 【空山新雨】 閱讀(...) 評論(...) 編輯 收藏
内部期期公开一波中特