Gerrit 整合¶
介紹¶
外掛功能:透過簡單的安裝和配置,研發同學可以將 Gerrit 的 change 和Meegle的工作項進行關聯,並可透過merge 事件自動流轉節點/狀態。
名詞解釋¶
- 關聯:指將 Gerrit 資訊與Meegle資訊進行關聯,關聯成功後,可在需求/缺陷等工作項中看到關聯的 changes 資訊;
- 流轉:在關聯的基礎上,透過 change 的狀態變化自動流轉工作項的節點/狀態,無需人工點選;
- 分端流轉:各端(前端/後端...)只流轉各自端對應的節點/狀態。
安裝/升級¶
操作人:Meegle空間管理員
安裝新外掛¶
在Meegle中,前往空間配置 → 外掛管理 → 右上角新增外掛;

選擇對應的外掛「新增外掛」;

配置 Webhook¶
- 在外掛中選擇「複製 URL」;

- Gerrit 支援按 Project 和全域性兩種 webhook 配置方式。 前提,Gerrit 已安裝 webhook 外掛,Gerrit 外掛安裝可以參考官方文件,安裝之後效果如下:

確認外掛安裝後,可以透過以下方式進行配置:
- 按 Project 可透過 api 進行新增,gerrit 相關API文件可以在 {$gerrit_host}/plugins/webhooks/Documentation/rest-api-config.md 路徑下找到
- 全域性配置方式需要在 gerrit 部署目錄的/etc 子路徑下的 gerrit.config 檔案進行配置,相關幫助文件在{$gerrit_host}/plugins/webhooks/Documentation/index.html

升級已有外掛¶
如果已經安裝外掛,點選「更新」升級舊外掛即可。

外掛配置¶
操作人:Meegle空間管理員
訴求一:只關聯不流轉¶
無需再做任何配置,安裝外掛(注意非位元組租戶還需配置 Webhook )即可生效。使用者可參照【只關聯不流轉】進行關聯。
訴求二:關聯且流轉¶
新建規則¶
前往空間配置 → 外掛 → Gerrit 外掛→ 配置 ,點選「新增流轉規則」按鈕進入新建規則彈窗。

選擇工作項型別¶
選擇需要流轉的工作項型別,如需求 → 技術專項;

配置一條倉庫&節點對映關係¶
鎖定流轉訊號來源,多端分別流轉看這裡:
- 點選「選擇倉庫」,選擇本條驅動規則的需要從哪個 Gerrit 倉庫觸發:
- 任意倉庫,無需分端流轉:選擇「任意倉庫」,代表在關聯的基礎上,任意倉庫的change訊號,都可流轉工作項需求;
- 安全考慮,統一用特定倉庫:輸入特定倉庫的名稱,按回車,並選中;配置好後,只有特定倉庫來的流轉訊號,才會驅動流轉節點/狀態。
- 多端節點/狀態,分別驅動流轉:首先,確定各端(前端/後端/...)倉庫相互獨立,不共用;然後,每條對映關係中,只配置某個端的倉庫名稱(含namespace),一個端有多個倉庫的,可逐一新增;
- 配置好後,不同的倉庫訊號將會驅動流轉不同的節點/狀態;
倉庫名稱可以在Gerrit 倉庫管理頁面進行檢視 url 路徑一般為:{$gerrit_host}/{$user_name}/repos

選擇 Gerrit 事件¶
目前僅有「Change Merged 」這一種事件,選擇即可。

選擇流轉的節點/狀態¶
配合上述3.1完成對應節點/狀態的配置,如XXX 倉庫 的Change Mergerd完成時,服務端change 節點完成
如需要一次性流轉多個連續序列的節點,可在此處選擇多個節點。 注意:建議狀態流工作項不要多選,因為狀態流轉存在環路,流轉結果會不穩定。

選擇必填模式¶
此功能僅限節點流工作項使用。 狀態流工作項無法設定必填模式,Gerrit 訊號流入後驅動狀態自動流轉,同時也可以手動流轉。
Gerrit 訊號驅動節點流轉¶
開啟必填模式後,將為該節點增設必填欄位,只有 Gerrit 訊號流入後節點才可流轉。
- 使用場景:透過 Gerrit 訊號自動流轉節點,規範開發流程。
- 缺點:靈活性較低,若無 Gerrit 訊號流入,該欄位值將阻塞節點流轉。例如:某些需求/缺陷不涉及研發倉庫修改,節點/狀態將無法流轉。

手動流轉 + Gerrit 訊號驅動節點流轉¶
開啟必填模式後,節點中不會新增欄位,Gerrit 訊號流入後節點自動流轉;同時使用者也可手動點選流轉。
- 使用場景:透過自動流轉提高研發/測試同學流轉節點的效率,同時可以手動流轉,不阻塞流程。
- 缺點:可以手動流轉,無法透過 Gerrit 訊號規範開發流程。

自定義規則¶

自定義字首¶
- 只支援小寫字母
- 主要用於commit 關聯
- 使用方式參考:【訴求一:只關聯不流轉】-【在 Gerrit 中關聯】
驅動關鍵字¶
- 主要用於MR - merged 事件自動流轉節點/狀態
- 使用方式參考:【訴求二:自動流轉】
儲存規則¶
點選「建立」儲存規則即可生效。使用者可參照【關聯且流轉】進行關聯,實現節點自動流轉。
刪除規則¶
如果修改過程中發現模板已刪除的,代表規則已不再生效,建議點選刪除按鈕,刪掉這條規則。

如果修改過程中發現節點/狀態已刪除,可能還有存量資料使用這些節點/狀態,如果想對存量資料保持作用,則無需修改。
刪除外掛¶
如需刪除外掛,可以點選「刪除」按鈕,刪除後,外掛將不再展現,同時相關資料會全部清空,需重新新增並進行重新配置,請謹慎操作。

如果之前開啟了必填模式,注意存量工作項中的還會有必填欄位,可以透過在詳情頁升級版本去除。

外掛使用¶
操作人:Meegle使用者
訴求一:只關聯不流轉¶
研發同學可透過commit、branch、change 關聯需求/缺陷等工作項,具體操作如下:
在Meegle中複製工作項 ID¶
在Meegle需求/缺陷的詳情頁中,透過快捷鍵複製工作項ID;
- Windows:
Ctrl + Shift + C - IOS:
Cmd + Shift + C也可在需求/缺陷的詳情頁,點選右上角“···”,複製工作項ID。

在 Gerrit 中關聯¶
commit 關聯¶
在 change 的 commit message 中,用關聯語法進行關聯;注意這裡是一次性設定,無法修改。

命令列關聯,單個需求、缺陷等工作項例項進行關聯時: 選擇多個需求、缺陷等工作項例項進行關聯時:
關聯語法¶
m-/M-/f-/F-workitemID,如m-439945
- 大小寫不限
- 位置不限
- 一次性關聯多個時,用‘,’分隔即可
關聯效果¶
完成關聯後,Meegle會收到相應的訊號,在對應的需求、缺陷等工作項例項的「Gerrit 」標籤頁展示對應資訊。

訴求二:自動流轉¶
研發同學可透過 merged 事件自動流轉節點/狀態。
在Meegle中複製工作項 ID¶
在Meegle需求/缺陷的詳情頁中,透過快捷鍵複製工作項ID;
- Windows:
Ctrl + Shift + C - IOS:
Cmd + Shift + C也可在需求/缺陷的詳情頁,點選右上角“···”,複製工作項ID。

在 Gerrit 中關聯¶
新建/編輯 change message 時,在 message 中填寫下方流轉語法,即可在該 change 完成 merged 時,自動流轉對應工作項或節點。
resolve m-/M-/f-/F-workitemID,如resolve m-439945

- 後續當 change 狀態變更為 merged 時,關聯的工作項將根據配置規則自動流轉;
- 若關聯時 change 狀態已為 merged,則在關聯成功的瞬間觸發流轉;
-
如果測試訊號沒有變綠,可以先流轉節點為進行中狀態。 除 resolve 之外,還支援以下詞:
-
Close:
Close, Closes, Closed, Closing, close, closes, closed, closing - Fix:
Fix, Fixes, Fixed, Fixing, fix, fixes, fixed, fixing -
Resolve:
Resolve, Resolves, Resolved, Resolving, resolve, resolves, resolved, resolving以上關鍵詞不區分大小寫: -
整個流轉結構體,在標題、描述中的位置不限,即
resolve m-439945可放在標題/描述中的任意位置 - 一次性流轉多個時,用‘,’分隔即可,如
resolve m-439945, m-439946,即可實現 merged 後自動流轉兩個工作項
關聯效果¶
完成關聯後,Meegle會收到相應的訊號,在對應的需求、缺陷等工作項例項的「Gerrit 」標籤頁展示對應資訊。 該 change 完成 merged 時,Meegle會收到相應的訊號,需求、缺陷等工作項例項的節點/狀態將自動流轉。

FAQ¶
是否支援私有化部署的 Gerrit?¶
支援,只要私有化版本可以和外網通訊且支援 HTTPS 即可使用。
為什麼配置之後沒有生效?¶
如果是私有化部署,考慮網路環境沒有互通,請檢查內網環境問題。如果非私有部署,考慮相關服務阻斷了連結,請等待相關服務恢復。
為什麼 change 已 merged, 但在Meegle的節點/狀態上沒有收到 Gerrit 訊號?¶
可以依次檢查以下內容:
- 規則配置是否完整;
- 關聯規則中是否設定為必填;
- 模板中的節點是否存在(有可能被其他管理員修改過);
- 是否升級了模板(若關聯配置是後新增的話,需要在前端升級模板,才能生效);
- Change commit message 中是否使用流轉語法。
- 流轉規則是否設定了倉庫條件。如有,檢查倉庫名稱是否匹配。注意:倉庫名稱嚴格區分大小寫。
是否可以配置分端(前端/後端/...)流轉?¶
可以配置多端分別驅動節點/狀態流轉:
- 確定各端(前端/後端/...)倉庫相互獨立,不共用;
- 每條對映關係中,只配置某個端的倉庫名稱(含namespace),一個端有多個倉庫的,可逐一新增。
關聯 Gerrit Tab 何時展示?¶
- 配置了流轉規則的工作項一定會展示 gerrit tab;
- 未配置流轉規則的工作項,如果在倉庫端透過命令進行了關聯,被關聯的工作項例項會展示 gerrit tab。
點選解綁未報錯但是重新整理還在?¶
解綁操作必須是當前工作項的建立人、角色人員、或當前負責人才可以。 git commit -m "m-工作項ID" git commit -m "m-工作項ID,f-工作項ID"