命令行工具 - gitlab 合并机器人

简介: 命令行工具 - gitlab 合并机器人。

gitlab-mergebot

gitlab merge request robot 是一个 golang 编写的 gitlab mr 请求处理扩展服务。

由于 gitlab(free plan) 的 Merge Request 功能有限, 不能支持多人 Code Reivew。 因此引入第三方机器人进行 MR 合法性仲裁。

设计思路

  1. 目标的安全: 使用 目标项目和分支 中的 .mergebot.yml 配置作为机器人判定配置
  2. 有意义的文字信息: 使用 Merge RequestTitle 和 Description 作为合并后的的 commit message

    • 以约束 Merge Request 的语意完整, 以及维护与 commit 的关联
  3. 以人为本: 可以将通过 Code Review 的 Merge Request 转移给其他 Assignee 进行最终合并。

使用说明 Usage

1. 启动 mergebot 服务

  1. gitlab 上选择任意一个公共账户, 或创建一个新账户。
  2. 用户配置中, 创建 Access Token , 权限为 api
  3. 启动 mergebot
GITLAB_Endpoint="https://git.example.com"
GITLAB_PrivateToken="Adfasdfadfasdfaksdjf"
./gitlab-mergebot

make-up.png
make-up.png

2. 源分支管理

2.1 Create Merge Request

Commit Message 选择使用 MR 的 TitleDescription 是为了约束用户更加重视信息的 规范性完整性

文档即注释

  1. merge_commit_message 的内容为 merge request 的标题 Title 内容。
  2. squash_commit_message 的内容为 merge request 的描述 Description 内容。

commit-message.png
commit-message.png

Assignee

  1. Assignee 选择人为 mergebot

assignee-bot.png
assignee-bot.png

3. 目标分支管理

3.1 机器人配置 .mergebot.yml

  1. mergebot 加入 项目项目所在的 group, 权限设置为 Developer
  2. 在目标分支的 根目录 下创建 .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

3.2 Code Review

  1. 任意用户都可以在 MR 下进行评论
  2. 但只有在 目标分支.mergebot.yml 分支中的 CodeReivewer 中的候选人评论内容为 @gitlab lgtm 时, 机器人才会进行有效计数。

4. Transfer Assignee or Merge

.mergebot.yml 中的 assignees 控制该行为。

  1. assignees 有效时, mergebot 将会随机选择一位候选人, 并设置为 Assignee 对象。 并有改用户进行后续合并管理。
  2. assignees 无效时(无候选人), mergebot 将直接进行 合并操作
相关文章
|
7月前
|
JavaScript Go 项目管理
云效常见问题之使用gitlab仓库将代码合并评审环节集成到云效如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
207 1
|
开发工具 git
IDEA2021向gitlab提交代码并合并分支全详细流程(图解)
IDEA2021向gitlab提交代码并合并分支全详细流程(图解)
1413 0
|
运维 Kubernetes 供应链
【极狐 GitLab】在 web 端合并分支
【极狐 GitLab】在 web 端合并分支
366 0
|
开发工具 git
Gitlab 从master拉取代码创建新分支 并且再将修改合并到master
Gitlab 从master拉取代码创建新分支 并且再将修改合并到master
750 0
|
机器人
Gitlab上手指南(九)|如何通过gitlab webhooks绑定钉钉消息通知机器人
当我们push代码、合并代码、触发了CI/CD等等一系列操作的时候,都可以通过配置钉钉机器人,来接受到这些消息。下面我们实际操作一下。 找一个钉钉群,在智能群助手中添加钉钉机器人 点击...添加机器人
1545 0
|
存储 缓存 安全
Gitlab上手指南(五)|如何优雅的拉取和合并代码
pull or fetch 拉取代码的操作有两种形式,git pull和git fetch,那么这两种有什么区别呢? 让我们先来看看一个架构图 图中展示一个完整的git流程,为了更清晰的了解每个区域,
2154 0
|
开发工具 git
以gitlab为例,git如何把自己的多个提交合并成一个(及注意事项)
以gitlab为例,git如何把自己的多个提交合并成一个(及注意事项)
850 0
以gitlab为例,git如何把自己的多个提交合并成一个(及注意事项)
|
前端开发 开发工具 git
GitLab/Git:在AndroidStudio上合并分支代码
GitLab/Git:在AndroidStudio上合并分支代码
917 0
GitLab/Git:在AndroidStudio上合并分支代码
|
4月前
|
Shell Docker 容器
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner