
pepakriz/gitlab-merger-botGitLab Merger Bot 是一款用于自动化处理 GitLab 合并请求(Merge Request, MR)的工具。其核心目标是确保每次合并后 master 分支保持"绿色"(即构建通过),通过自动执行 rebase、检查流水线状态、处理冲突等操作,减少人工维护合并请求的时间成本,尤其适用于需要处理大量合并请求的大型项目或单体仓库。
自动化合并流程
状态反馈
bot:skip-squash:跳过提交压缩bot:high-priority:将 MR 置于队列首位(适用于热修复等紧急场景)bot:high-priority 标签优先处理热修复 MR创建 Bot 用户
为 bot 创建独立的 GitLab 账户(推荐专用账户,避免使用可能离开项目的个人账户)
生成个人访问令牌
api 权限范围权限设置
确保 bot 用户拥有合并请求的接受权限(如 Maintainer 或 Admin 角色)
合并设置
在仓库「设置 > 合并请求」中配置:
bashdocker run -d --name gitlab-merger-bot --restart on-failure \ # -e GITLAB_URL="[***]" \ # 自托管 GitLab 实例需指定 -e GITLAB_AUTH_TOKEN="<your-bot-token>" \ -v "$(pwd)/data":/data \ pepakriz/gitlab-merger-bot:latest
创建 docker-compose.yml:
yamlversion: '3' services: gitlab-merger-bot: image: pepakriz/gitlab-merger-bot:latest container_name: gitlab-merger-bot restart: on-failure environment: # GITLAB_URL: "[***]" # 自托管实例取消注释并修改 GITLAB_AUTH_TOKEN: "<your-bot-token>" CI_CHECK_INTERVAL: 10 # 流水线检查间隔(秒) MR_CHECK_INTERVAL: 20 # MR 检查间隔(秒) REMOVE_BRANCH_AFTER_MERGE: "true" # 合并后删除分支 volumes: - ./data:/data # 持久化队列数据
启动服务:
bashdocker-compose up -d
bashhelm repo add gitlab-merger-bot [***]
bashhelm install gitlab-merger-bot gitlab-merger-bot \ # --set settings.gitlabUrl="[***]" \ # 自托管实例需指定 --set settings.authToken="<your-bot-token>"
bash# 克隆代码并安装依赖 git clone [***] cd gitlab-merger-bot yarn install # 构建并启动 yarn run build GITLAB_AUTH_TOKEN="<your-bot-token>" yarn run start
通过环境变量配置 bot 行为,支持以下参数:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
GITLAB_URL | [***] | GitLab 实例 URL(自托管实例需修改) |
GITLAB_AUTH_TOKEN | - | 必填,GitLab 个人访问令牌(api 权限) |
CI_CHECK_INTERVAL | 10 | 流水线状态检查间隔(秒) |
MR_CHECK_INTERVAL | 20 | 合并请求状态检查间隔(秒) |
REMOVE_BRANCH_AFTER_MERGE | true | 合并后自动删除源分支 |
SQUASH_MERGE_REQUEST | true | 合并时压缩提交 |
AUTORUN_MANUAL_BLOCKING_JOBS | true | 自动触发手动阻塞任务 |
SKIP_SQUASHING_LABEL | bot:skip-squash | 跳过压缩的标签名称 |
HI_PRIORITY_LABEL | bot:high-priority | 高优先级标签名称(置于队列首位) |
SENTRY_DSN | 空字符串 | Sentry DSN(启用监控) |
HTTP_SERVER_ENABLE | false | 启用实验性 API 和 dashboard |
HTTP_SERVER_PORT | 4000 | HTTP 服务端口(需启用 HTTP_SERVER_ENABLE) |
WEB_HOOK_TOKEN | 空字符串 | 启用实验性 WebHook 支持 |
使用 *** 暴露本地服务:
bash***_AUTH=<your-***-auth-token> docker run -it --rm --net=host -p 4040:4040 -e ***_AUTH="$***_AUTH" wernight/*** *** http 4000
需先启用 HTTP 服务(
HTTP_SERVER_ENABLE=true)并配置WEB_HOOK_TOKEN。
!分配给 Bot
!合并成功
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务