跳轉至

Gerrit 整合

介紹

外掛功能:透過簡單的安裝和配置,研發同學可以將 Gerrit 的 change 和Meegle的工作項進行關聯,並可透過merge 事件自動流轉節點/狀態。

名詞解釋

  • 關聯:指將 Gerrit 資訊與Meegle資訊進行關聯,關聯成功後,可在需求/缺陷等工作項中看到關聯的 changes 資訊;
  • 流轉:在關聯的基礎上,透過 change 的狀態變化自動流轉工作項的節點/狀態,無需人工點選;
  • 分端流轉:各端(前端/後端...)只流轉各自端對應的節點/狀態。

安裝/升級

操作人:Meegle空間管理員

安裝新外掛

在Meegle中,前往空間配置 → 外掛管理 → 右上角新增外掛;

LzSxiaIUHo

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

i6omABcv8t

配置 Webhook

  1. 在外掛中選擇「複製 URL」;

n8SXCOnCK8

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

zPQU7qtTjE

確認外掛安裝後,可以透過以下方式進行配置:

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

RkxbbDZfTl

升級已有外掛

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

R2P8gw4k9V

外掛配置

操作人:Meegle空間管理員

訴求一:只關聯不流轉

無需再做任何配置,安裝外掛(注意非位元組租戶還需配置 Webhook )即可生效。使用者可參照【只關聯不流轉】進行關聯。

訴求二:關聯且流轉

新建規則

前往空間配置 → 外掛 → Gerrit 外掛→ 配置 ,點選「新增流轉規則」按鈕進入新建規則彈窗。

wC9nOiMdZ9

選擇工作項型別

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

aXfwrbkAuw

配置一條倉庫&節點對映關係

鎖定流轉訊號來源,多端分別流轉看這裡:

  1. 點選「選擇倉庫」,選擇本條驅動規則的需要從哪個 Gerrit 倉庫觸發:
  2. 任意倉庫,無需分端流轉:選擇「任意倉庫」,代表在關聯的基礎上,任意倉庫的change訊號,都可流轉工作項需求;
  3. 安全考慮,統一用特定倉庫:輸入特定倉庫的名稱,按回車,並選中;配置好後,只有特定倉庫來的流轉訊號,才會驅動流轉節點/狀態。
  4. 多端節點/狀態,分別驅動流轉:首先,確定各端(前端/後端/...)倉庫相互獨立,不共用;然後,每條對映關係中,只配置某個端的倉庫名稱(含namespace),一個端有多個倉庫的,可逐一新增;
  5. 配置好後,不同的倉庫訊號將會驅動流轉不同的節點/狀態;

倉庫名稱可以在Gerrit 倉庫管理頁面進行檢視 url 路徑一般為:{$gerrit_host}/{$user_name}/repos

T8g4OdWh3b

選擇 Gerrit 事件

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

W6kewYaE9M

選擇流轉的節點/狀態

配合上述3.1完成對應節點/狀態的配置,如XXX 倉庫 的Change Mergerd完成時,服務端change 節點完成

如需要一次性流轉多個連續序列的節點,可在此處選擇多個節點。 注意:建議狀態流工作項不要多選,因為狀態流轉存在環路,流轉結果會不穩定。

X9lIE8T0wv

選擇必填模式

此功能僅限節點流工作項使用。 狀態流工作項無法設定必填模式,Gerrit 訊號流入後驅動狀態自動流轉,同時也可以手動流轉。

Gerrit 訊號驅動節點流轉

開啟必填模式後,將為該節點增設必填欄位,只有 Gerrit 訊號流入後節點才可流轉。

  • 使用場景:透過 Gerrit 訊號自動流轉節點,規範開發流程。
  • 缺點:靈活性較低,若無 Gerrit 訊號流入,該欄位值將阻塞節點流轉。例如:某些需求/缺陷不涉及研發倉庫修改,節點/狀態將無法流轉。

KKeWljWfcy

手動流轉 + Gerrit 訊號驅動節點流轉

開啟必填模式後,節點中不會新增欄位,Gerrit 訊號流入後節點自動流轉;同時使用者也可手動點選流轉。

  • 使用場景:透過自動流轉提高研發/測試同學流轉節點的效率,同時可以手動流轉,不阻塞流程。
  • 缺點:可以手動流轉,無法透過 Gerrit 訊號規範開發流程。

xqk31Y3teG

自定義規則

a96bade7c-9c32-45ae-ab36-ff11d8dec295

自定義字首

  • 只支援小寫字母
  • 主要用於commit 關聯
  • 使用方式參考:【訴求一:只關聯不流轉】-【在 Gerrit 中關聯】

驅動關鍵字

  • 主要用於MR - merged 事件自動流轉節點/狀態
  • 使用方式參考:【訴求二:自動流轉】

儲存規則

點選「建立」儲存規則即可生效。使用者可參照【關聯且流轉】進行關聯,實現節點自動流轉。

刪除規則

如果修改過程中發現模板已刪除的,代表規則已不再生效,建議點選刪除按鈕,刪掉這條規則。

Ed7MeDl4He

如果修改過程中發現節點/狀態已刪除,可能還有存量資料使用這些節點/狀態,如果想對存量資料保持作用,則無需修改。

刪除外掛

如需刪除外掛,可以點選「刪除」按鈕,刪除後,外掛將不再展現,同時相關資料會全部清空,需重新新增並進行重新配置,請謹慎操作。

q2rooz086N

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

TMWerdiEHQ

外掛使用

操作人:Meegle使用者

訴求一:只關聯不流轉

研發同學可透過commit、branch、change 關聯需求/缺陷等工作項,具體操作如下:

在Meegle中複製工作項 ID

在Meegle需求/缺陷的詳情頁中,透過快捷鍵複製工作項ID;

  • Windows: Ctrl + Shift + C
  • IOS:Cmd + Shift + C 也可在需求/缺陷的詳情頁,點選右上角“···”,複製工作項ID。

Lrzn1WlOyj

在 Gerrit 中關聯

commit 關聯

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

aAM9n5lEv0

命令列關聯,單個需求、缺陷等工作項例項進行關聯時: 選擇多個需求、缺陷等工作項例項進行關聯時:

關聯語法

m-/M-/f-/F-workitemID ,如 m-439945

  • 大小寫不限
  • 位置不限
  • 一次性關聯多個時,用‘,’分隔即可

關聯效果

完成關聯後,Meegle會收到相應的訊號,在對應的需求、缺陷等工作項例項的「Gerrit 」標籤頁展示對應資訊。

fRk2N5RYmP

訴求二:自動流轉

研發同學可透過 merged 事件自動流轉節點/狀態。

在Meegle中複製工作項 ID

在Meegle需求/缺陷的詳情頁中,透過快捷鍵複製工作項ID;

  • Windows: Ctrl + Shift + C
  • IOS:Cmd + Shift + C 也可在需求/缺陷的詳情頁,點選右上角“···”,複製工作項ID。

eEfky5OKEF

在 Gerrit 中關聯

新建/編輯 change message 時,在 message 中填寫下方流轉語法,即可在該 change 完成 merged 時,自動流轉對應工作項或節點。

resolve m-/M-/f-/F-workitemID ,如 resolve m-439945

kVMWkhXaa0

  • 後續當 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會收到相應的訊號,需求、缺陷等工作項例項的節點/狀態將自動流轉。

cerkkU7wpB

FAQ

是否支援私有化部署的 Gerrit?

支援,只要私有化版本可以和外網通訊且支援 HTTPS 即可使用。

為什麼配置之後沒有生效?

如果是私有化部署,考慮網路環境沒有互通,請檢查內網環境問題。如果非私有部署,考慮相關服務阻斷了連結,請等待相關服務恢復。

為什麼 change 已 merged, 但在Meegle的節點/狀態上沒有收到 Gerrit 訊號?

可以依次檢查以下內容:

  • 規則配置是否完整;
  • 關聯規則中是否設定為必填;
  • 模板中的節點是否存在(有可能被其他管理員修改過);
  • 是否升級了模板(若關聯配置是後新增的話,需要在前端升級模板,才能生效);
  • Change commit message 中是否使用流轉語法。
  • 流轉規則是否設定了倉庫條件。如有,檢查倉庫名稱是否匹配。注意:倉庫名稱嚴格區分大小寫。

是否可以配置分端(前端/後端/...)流轉?

可以配置多端分別驅動節點/狀態流轉:

  1. 確定各端(前端/後端/...)倉庫相互獨立,不共用;
  2. 每條對映關係中,只配置某個端的倉庫名稱(含namespace),一個端有多個倉庫的,可逐一新增。

關聯 Gerrit Tab 何時展示?

  1. 配置了流轉規則的工作項一定會展示 gerrit tab;
  2. 未配置流轉規則的工作項,如果在倉庫端透過命令進行了關聯,被關聯的工作項例項會展示 gerrit tab。

點選解綁未報錯但是重新整理還在?

解綁操作必須是當前工作項的建立人、角色人員、或當前負責人才可以。 git commit -m "m-工作項ID" git commit -m "m-工作項ID,f-工作項ID"