如何构建GitLab AI代码审查的多项目可复用架构?
摘要:gitlab系统拓展AI代码自动审查多项目可复用架构 概述 我相信大家再赶进度的时候最讨厌的就是代码review,时间紧迫,几个项目并行的时候,review也是一个很大的开销,外面的开源方案再安全性上都很差,导致没有办法实际落地,这里开始设
gitlab系统拓展AI代码自动审查多项目可复用架构
概述
我相信大家再赶进度的时候最讨厌的就是代码review,时间紧迫,几个项目并行的时候,review也是一个很大的开销,外面的开源方案再安全性上都很差,导致没有办法实际落地,这里开始设计一套可复用的架构,最初的AI代码审查系统基于单项目脚本实现(如参考博客:https://www.cnblogs.com/duwenlong/p/19452150),每个项目维护独立的 review.py 和 .gitlab-ci.yml。这种方式存在代码重复、维护困难等问题。为此,我设计了共享工具方案,从单项目迁移到多项目可复用架构。后续持续迭代。
背景
目标:自动化代码审查,支持中文反馈,扩展为统计、RAG等高级功能。
技术栈:Ollama (deepseek-coder模型), GitLab CI/CD, Python, GitLab API。
挑战:解决私有仓库的include权限问题,实现跨项目的CI配置共享。
步骤1: 基础设置
安装Ollama和GitLab Runner
下载Ollama二进制文件:wget https://.../ollama 并放置于 /home/user/Downloads/bin/ollama。
启动Ollama服务:nohup /home/user/Downloads/bin/ollama serve &。
注册GitLab Runner:使用 gitlab-runner register 命令,选择shell executor,设置标签为 ai-review。
配置systemd服务:创建 /etc/systemd/system/ollama.service 文件,确保Ollama随系统启动。
创建第一个项目 (示例项目2)
克隆示例项目2项目:git clone https://gitlab.example.com/.../project2.git。
开发核心脚本 review.py:集成GitLab API和Ollama,生成代码审查反馈。
配置 .gitlab-ci.yml:定义触发条件(push和merge request),执行审查脚本。
设置环境变量:添加 GITLAB_TOKEN 用于API访问。
(前面的内容可参考博客:https://www.cnblogs.com/duwenlong/p/19452150)
步骤2: 扩展到多个项目
配置示例项目3
克隆示例项目3项目。
复制示例项目2的CI配置和审查脚本。
优化CI管道:添加 GIT_DEPTH: 1 减少克隆深度,设置 timeout: 30m 避免长时间运行。
配置示例项目1
类似示例项目3的配置过程。
步骤3: 创建共享工具 (ai-code-review-tool)
初始设计思路:Python包 + CI Include
方法选择:采用Python包封装核心逻辑,通过GitLab CI的include机制共享CI模板,实现代码复用。
优势:
核心功能集中维护,避免各项目重复开发。
CI配置标准化,简化项目接入。
支持版本控制和自动更新。
工具位置:https://gitlab.example.com/example-team/ai-code-review-tool
实施细节
项目结构设计
ai-code-review-tool/
├── setup.py # 包定义和依赖管理
├── ai_code_review/
│ ├── __init__.py
│ ├── cli.py # 命令行接口,封装审查逻辑
│ └── ... # 其他模块
├── .gitlab-ci.yml # CI模板 + 自动发布作业
└── ci-review.yml # 共享CI配置模板
核心组件开发
setup.py:定义包元数据、依赖(python-gitlab, ollama等)和入口点。
cli.py:实现命令行工具 ai-review,支持项目ID、MR IID等参数,调用Ollama生成审查反馈。
ci-review.yml:定义标准CI作业模板,包括触发规则、环境变量、脚本执行。
自动发布机制
pypi-publish作业:在tag推送时自动构建和发布包到GitLab Package Registry。
版本管理:使用语义化版本,确保兼容性和更新通知。
