如何构建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。 版本管理:使用语义化版本,确保兼容性和更新通知。
阅读全文