gitlab自动code review

gitlab webhook

ChatGPT+ 极狐 GitLab

在这里插入图片描述

极狐 GitLab 代码变更
webhook 发送事件消息
ai-code-review App
发送 Review Request
ChatGPT
返回 Review Response
ai-code-review App
发送 Review Comment 至极狐 GitLab MR

ai-code-review 环境

  • 基本条件:机器能够访问 api.openai.com,且与极狐 GitLab 机器网络可互相访问。

  • *Linux / MacOS / Unix:
    Docker 安装:若未安装 Docker,可使用命令 curl -fsSL https://get.docker.com | bash -s docker 进行安装。
    运行程序:使用命令 docker run -itd -p 8888:8888 --restart=always --name ai-code-review -e gitlab_private_token=“<你的GitLab Token>” -e language=“Chinese” -e openai_api_key=“<你的OpenAI Token>” -e acr_license=“test” satomic/ai-code-review:20230321 启动程序,需将其中的 Token/License 参数替换为实际参数。

极狐 GitLab Webhook 配置

  • 在极狐 GitLab 中,对需要进行 AI code review 的 group 或 project 进行配置,建议使用 group 级别的 webhook,这样 group 内所有项目的 MR 都会被 AI 审查,无需为每个 project 重复配置。

  • 配置完成后,每次合并请求产生及变化时,都会在 webhook 发送记录中看到相应记录。

ChatGPT 评审效果

Review 效果示例可访问 Public 演示仓库 AI 自动 MR 评审演示。(见连接展示)

定义自己的评审机器人

  • 前文中的自动化评审机器人封装在 docker 镜像中,其角色声明为资深编程专家,以精炼、严厉的语气给出审查建议。

  • 如果想让机器人“注入感情”,可以自定义角色声明,例如定义一个傲娇少女来评审。

  • 创建 ai_code_review.py 文件,编写代码实现自动化评审功能,核心函数包括:
    (1)ai_code_review:调用 openai.ChatCompletion.create() 方法基于预设 prompt 角色发起对话,得到评审结果。
    (2)comment:调用 .merge_request.notes.create() 方法将评审内容追加到 MR 中。

  • 单次评审的使用方式为传递对应参数实例化 AICodeReview 对象并调用相应方法。

参考

MCP

参考