← 返回
未分类 Key

Gitlab Mr Review Pipeline

自动化 GitLab MR 代码审核流水线。使用 AI 对 MR 进行代码审查,生成报告并邮件发送给提交人。
自动化 GitLab MR 代码审查流水线,利用 AI 生成审查报告并邮件发送给提交人。
20181112523 20181112523 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 需要
★ 0
Stars
📥 407
下载
💾 0
安装
1
版本
#latest

概述

GitLab MR Review Pipeline

自动化 GitLab Merge Request 代码审核流水线。使用 AI 对 MR 进行代码审查,生成报告并邮件发送给提交人。


依赖技能

执行前确保已安装:

  • glab-cli - GitLab CLI(可选,脚本会使用 API 直接调用)
  • code-review - AI 代码审核
  • md-to-pdf-advanced - Markdown 转 PDF
  • email-mail-master - 邮件发送

安装命令

npx clawhub install glab-cli
npx clawhub install code-review
npx clawhub install md-to-pdf-advanced
npx clawhub install email-mail-master

配置文件

路径: ~/.config/gitlab-mr-review-pipeline/config.json

{
  "gitlab": {
    "host": "http://your-gitlab.com",
    "access_token": "your-access-token"
  },
  "email": {
    "provider": "163",
    "address": "your-email@163.com",
    "auth_code": "your-auth-code"
  },
  "repositories": ["owner/repo1", "owner/repo2"]
}

配置说明

字段说明必需
------------------
gitlab.hostGitLab 地址
gitlab.access_tokenAccess Token(需 api 权限)
email.provider邮箱服务商(163/qq/126)
email.address邮箱地址
email.auth_code邮箱授权码(非登录密码)
repositories监控的仓库列表

使用方式

方式 1:直接告诉 OpenClaw

帮我审核 GitLab 仓库的 MR

OpenClaw 会按照以下流程执行:

方式 2:使用脚本初始化配置

python3 skills/gitlab-mr-review-pipeline/scripts/init-config.py

执行流程

步骤 1:检查配置

读取 ~/.config/gitlab-mr-review-pipeline/config.json

如果配置不存在,提示用户运行初始化脚本。

步骤 2:查询待处理 MR

使用 GitLab API 查询每个仓库的待处理 MR:

# 使用工具脚本
python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-list --repo owner/repo

API 端点: {host}/api/v4/projects/{repo}/merge_requests?state=opened

如果没有待处理 MR,提示用户并终止。

步骤 2.5:检查 MR 是否已处理(避免重复)

对于每个待处理 MR,检查是否已处理过:

python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py check --repo owner/repo --mr-id 2

如果输出包含 "已处理过",跳过该 MR。

步骤 3:获取 MR 详情

对于每个待处理 MR:

  1. 获取 diff

```bash

python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-diff --repo owner/repo --mr-id 2

```

API: {host}/api/v4/projects/{repo}/merge_requests/{id}/changes

  1. 获取提交人邮箱

```bash

python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-commits --repo owner/repo --mr-id 2

```

API: {host}/api/v4/projects/{repo}/merge_requests/{id}/commits

步骤 4:AI 代码审核

使用 code-review 技能对 diff 内容进行审查。

审核提示模板:

使用 code-review 技能对以下代码变更进行详细审查。

## MR 信息
- 仓库:{repo}
- MR ID: !{id}
- 标题:{title}
- 作者:{author}

## 代码变更

{diff_content}


## 审核要求
请按照 code-review 技能的 checklist 进行审查,**只列出发现的问题项**。

输出格式参考:references/review-report-template.md

输出: file/mr-code-review-report.md

步骤 5:生成 PDF

使用 md-to-pdf-advanced 技能:

python3 skills/md-to-pdf-advanced/scripts/md_to_pdf.py \
  file/mr-code-review-report.md \
  mr-reports/{repo}_MR{id}_{author}_review.pdf

步骤 6:发送邮件

使用 email-mail-master 技能发送审核报告。

邮件主题: [MR Review - AI 代码审核] !{id} {title}

邮件正文模板:

尊敬的开发者,您好!

您的 Merge Request 已完成 AI 代码审核。

📋 审核概览
- MR: !{id} {title}
- 仓库:{repo}
- 综合评分:{score}/100
- 发现问题:{critical} 个严重,{major} 个主要

📎 请查收附件中的详细审核报告(PDF 格式)。

💡 建议
请优先修复标记为 [CRITICAL] 和 [MAJOR] 的问题。
修复完成后,可以重新提交审核。

祝编码愉快!

---
GitLab MR Review Pipeline
AI 代码审核系统

步骤 7:标记 MR 已处理

python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py mark \
  --repo owner/repo \
  --mr-id 2 \
  --author author@example.com \
  --score 61 \
  --issues 5

记录已处理的 MR,避免下次重复审核。

步骤 8:清理临时文件(可选)

python3 skills/gitlab-mr-review-pipeline/scripts/cleanup.py --days 7

清理临时 markdown 文件和 7 天前的 PDF 报告。


工具脚本

gitlab-api.py

GitLab API 调用工具。

# 查询 MR 列表
python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-list --repo owner/repo

# 获取 MR diff
python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-diff --repo owner/repo --mr-id 2

# 获取 MR commits
python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py mr-commits --repo owner/repo --mr-id 2

# 验证仓库
python3 skills/gitlab-mr-review-pipeline/scripts/gitlab-api.py repo-check --repo owner/repo

mr-records.py

MR 处理记录管理(避免重复审核)。

# 检查 MR 是否已处理
python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py check --repo owner/repo --mr-id 2

# 标记 MR 已处理
python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py mark \
  --repo owner/repo --mr-id 2 --author user@example.com --score 61 --issues 5

# 列出最近处理的 MR
python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py list --days 7

# 清理旧记录
python3 skills/gitlab-mr-review-pipeline/scripts/mr-records.py cleanup --days 30

记录文件位置: ~/.config/gitlab-mr-review-pipeline/processed-mrs.json

cleanup.py

清理临时文件和旧报告。

# 清理临时文件和 7 天前的 PDF
python3 skills/gitlab-mr-review-pipeline/scripts/cleanup.py --days 7

# 显示存储统计
python3 skills/gitlab-mr-review-pipeline/scripts/cleanup.py --stats

# 清理所有临时文件
python3 skills/gitlab-mr-review-pipeline/scripts/cleanup.py --all

init-config.py

配置初始化脚本。

python3 skills/gitlab-mr-review-pipeline/scripts/init-config.py

会引导用户输入:

  • GitLab 地址和 Token
  • 邮箱配置
  • 监控仓库列表

并验证配置是否有效。


输出文件

Markdown 报告

  • 路径: file/mr-code-review-report.md
  • 格式: 参考 review-report-template.md

PDF 报告

  • 路径: mr-reports/{repo}_MR{id}_{author}_review.pdf

邮件

  • 收件人: MR 提交人邮箱
  • 主题: [MR Review - AI 审核] !{id} {title}
  • 附件: PDF 审核报告

报告格式示例

# Code Review Report

## 基本信息
| 项目 | 内容 |
|------|------|
| 仓库 | owner/repo |
| MR ID | !2 |
| 标题 | Feature xxx |

## ❌ 发现问题

### [CRITICAL] 问题标题
- **文件**: `path/to/file.java`
- **代码**:

// 问题代码

- **风险**: 描述风险
- **建议**: 修改建议

## 📊 评分
| 维度 | 得分 |
|------|------|
| 安全性 | 60/100 |
| 代码质量 | 75/100 |

**综合评分**: 61/100

## 🎯 结论
**建议**: 需要修复后重新审查

故障排除

GitLab API 调用失败

错误: 401 Unauthorized

原因: Token 无效或过期

解决: 重新生成 Access Token

仓库不存在

错误: 404 Not Found

原因: 仓库名称错误或无访问权限

解决: 检查仓库名称格式(owner/repo

邮件发送失败

错误: Authentication failed

原因: 使用了登录密码而非授权码

解决: 在邮箱设置中获取授权码(SMTP 授权码)

PDF 中文乱码

解决: 安装中文字体

sudo apt-get install fonts-noto-color-emoji fonts-wqy-zenhei
fc-cache -fv

安全注意事项

  1. 配置文件权限: 设置为 600

```bash

chmod 600 ~/.config/gitlab-mr-review-pipeline/config.json

```

  1. Token 安全: 不要将 Token 提交到版本控制
  1. 定期轮换: 建议每 3 个月更换一次 Token

示例会话

用户:帮我审核 GitLab 仓库的 MR

AI: 好的,让我先检查配置...

[检查配置]
✓ 配置文件已找到

[查询 MR]
✓ owner/repo: 发现 1 个待处理 MR (!2)

[获取 MR 详情]
✓ 获取 diff 成功(223KB)
✓ 提交人邮箱:author@example.com

[AI 代码审核]
✓ 使用 code-review 技能
✓ 发现 2 个 CRITICAL 问题
✓ 发现 3 个 MAJOR 问题
✓ 综合评分:61/100

[生成 PDF]
✓ PDF 已生成

[发送邮件]
✓ 邮件已发送至 author@example.com

✅ 处理完成!

版本

  • 版本: 2.0
  • 最后更新: 2026-03-29
  • 变更: 简化脚本逻辑,主要流程由 AI 执行

社区

  • 技能市场: https://clawhub.com
  • 问题反馈: 提交 Issue

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-03 09:51 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 677 📥 327,239
dev-programming

Mcporter

steipete
使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。
★ 195 📥 67,634
office-efficiency

Markdown to PDF Advanced

20181112523
使用多个后端(WeasyPrint、Pandoc、wkhtmltopdf)将 Markdown 文件转为 PDF,支持语法高亮、表格、图片和自定义 CSS 主题。
★ 1 📥 534