以前都是使用禪道官方推薦的服務器本地掃描的方式,但其實不太方便,需要跟着項目的變化,不斷的在配置文件維護項目相應倉庫的配置。
然后現在Web Hooks越來越普遍的情況下,想嘗試一種新的方式。看了禪道的Git模塊Control中的代碼后,發現了一個apiSync方法,於是有了思路:
覆蓋其 git/apiSync 動作;並通過使用獨立入口的方式回避其原有的鑒權機制,而通過 Gitlab 的 Hooks Secret Token來鑒權。
使用方法
- 將代碼解壓到禪道項目目錄
- 生成一段隨機字符串作為Secret Token,配置到 module/git/ext/config/gitlab_sync.php 文件中,$config->git->gitlabToken = 'your token';
- 登錄Gitlab進行相應配置,Admin area/System Hooks/,Url: https://yourdomain/webhook/gitlab.php,Secret Token:填入前面生成的Token;
- 在Gitlab System Hooks 頁面下方,點擊測試按鈕進行測試,看看通信是否正常
- 提交代碼,Commit Message 中注意加上 task#12、bug#45 格式的內容,然后推送代碼,去檢查禪道項目管理系統中相應任務或Bug是否生成一條“歷史記錄”
說明
在代碼倉庫中配置的email 參數最好跟禪道中賬號關聯的郵箱相同,這樣在生成的歷史記錄中能正常識別用戶的姓名。
參考
- https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#push-events
- https://www.zentao.net/book/zentaopmshelp/207.html