我用写了一个 gitlab 代码合并机器人, 帮老板每个月省了 100 万(附源码)
我用写了一个 gitlab 代码合并机器人, 帮老板每个月省了 100 万
gitlab merge request robot 是一个 golang 编写的 gitlab mr 请求处理扩展服务。
由于 gitlab(free plan) 的 Merge Request 功能有限, 不能支持多人 Code Reivew。 因此引入第三方机器人进行 MR 合法性仲裁。
设计思路
- 目标的安全: 使用 目标项目和分支 中的 
.mergebot.yml配置作为机器人判定配置 - 有意义的文字信息: 使用 Merge Request 的 
Title 和 Description作为合并后的的commit message。 
- 以约束 Merge Request 的语意完整, 以及维护与 commit 的关联
 
- 以人为本: 可以将通过 Code Review 的 Merge Request 转移给其他 Assignee 进行最终合并。
 
项目地址
Github 项目地址: https://github.com/tangx/gitlab-mergebot
使用说明 Usage
1. 启动 mergebot 服务
- 在 
gitlab上选择任意一个公共账户, 或创建一个新账户。 - 在用户配置中, 创建 
Access Token, 权限为api。 - 启动 
mergebot 
 |  | 

2. 源分支管理
2.1 Create Merge Request
Commit Message 选择使用 MR 的 Title 和 Description 是为了约束用户更加重视信息的 规范性 及 完整性。
文档即注释
merge_commit_message的内容为merge request的标题 Title 内容。squash_commit_message的内容为merge request的描述 Description 内容。

Assignee
- 将 Assignee 选择人为 mergebot
 

3. 目标分支管理
3.1 机器人配置 .mergebot.yml
将 mergebot 加入 项目 或 项目所在的 group, 权限设置为
Developer在目标分支的 根目录 下创建
.mergebot.yml, 如下
 |  | 
3.2 Code Review
- 任意用户都可以在 MR 下进行评论
 - 但只有在 目标分支 中 
.mergebot.yml分支中的 CodeReivewer 中的候选人评论内容为@gitlab lgtm时, 机器人才会进行有效计数。 
4. Transfer Assignee or Merge
当 .mergebot.yml 中的 assignees 控制该行为。
- 当 
assignees有效时,mergebot将会随机选择一位候选人, 并设置为Assignee对象。 并有改用户进行后续合并管理。 - 当 
assignees无效时(无候选人),mergebot将直接进行 合并操作。 
- 原文链接:https://typonotes.com/posts/2021/06/16/gitlab-mergebot/
 - 本文为原创文章,转载注明出处。
 - 欢迎 扫码关注公众号
Go与云原生或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。
 


