以前都是使用禅道官方推荐的服务器本地扫描的方式,但其实不太方便,需要跟着项目的变化,不断的在配置文件维护项目相应仓库的配置。
然后现在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
代码
https://gitee.com/web3d/GitlabCommentSyncForZentaoPMS
原文地址:https://www.cnblogs.com/x3d/p/zentao-gitlab-commit-sync.html
时间: 2024-11-08 00:30:22