gitlab merge request robot 是一个 golang 编写的 gitlab mr 请求处理扩展服务。
由于 gitlab(free plan)
的 Merge Request 功能有限, 不能支持多人 Code Reivew。因此引入第三方机器人进行 MR 合法性仲裁。
设计思路
.mergebot.yml
配置作为机器人判定配置Title 和 Description
作为合并后的的 commit message
。Github 项目地址: https://github.com/tangx/gitlab-mergebot
mergebot
服务gitlab
上选择任意一个公共账户, 或创建一个新账户。Access Token
, 权限为 api
。mergebot
GITLAB_Endpoint="https://git.example.com"
GITLAB_PrivateToken="Adfasdfadfasdfaksdjf"
./gitlab-mergebot
Commit Message 选择使用 MR 的 Title
和 Description
是为了约束用户更加重视信息的 规范性 及 完整性。
文档即注释
merge_commit_message
的内容为 merge request
的标题 Title 内容。squash_commit_message
的内容为 merge request
的描述 Description 内容。Assignee
.mergebot.yml
Developer
.mergebot.yml
, 如下# 最少 code review 人数
minReviewers: 2
# code review 有效名单
reviewers:
- guanyu
- zhangfei
- zhaoyun
# 合并操作候选人员名单
## 如果存在, mergebot 将在满足合并条件时, 随机选择一位候选人并转让
## 如不存在, mergebot 将直接合并
assignees:
- zhugeliang
# 是否压缩 commit
squash: true
# 删除源分支
shouldRemoveSourceBranch: true
# 需要 pipeline 成功才能合并。注意: 无 pipeline 视为不成功
mergeWhenPipelineSucceeds: true
.mergebot.yml
分支中的 CodeReivewer 中的候选人评论内容为 @gitlab lgtm
时, 机器人才会进行有效计数。当 .mergebot.yml
中的 assignees
控制该行为。
assignees
有效时, mergebot
将会随机选择一位候选人, 并设置为 Assignee
对象。并有改用户进行后续合并管理。assignees
无效时(无候选人), mergebot
将直接进行 合并操作。