基于docker的AI-Codereview-Gitlab部署實(shí)戰(zhàn)教程
AI-Codereview-Gitlab是一個(gè)基于大模型的自動(dòng)化代碼審查工具,幫助開發(fā)團(tuán)隊(duì)在代碼合并或提交時(shí),快速進(jìn)行智能化的審查(Code Review),提升代碼質(zhì)量和開發(fā)效率。
主要功能
- ?? 多模型支持
- 兼容 DeepSeek、ZhipuAI、OpenAI、通義千問 和 Ollama,想用哪個(gè)就用哪個(gè)。
- ?? 消息即時(shí)推送
- 審查結(jié)果一鍵直達(dá) 釘釘、企業(yè)微信 或 飛書,代碼問題無處可藏!
- ?? 自動(dòng)化日?qǐng)?bào)生成
- 基于 GitLab & GitHub Commit 記錄,自動(dòng)整理每日開發(fā)進(jìn)展,誰在摸魚、誰在卷,一目了然 ??。
- ?? 可視化 Dashboard
- 集中展示所有 Code Review 記錄,項(xiàng)目統(tǒng)計(jì)、開發(fā)者統(tǒng)計(jì),數(shù)據(jù)說話,甩鍋無門!
- ?? Review Style 任你選
- 專業(yè)型 ??:嚴(yán)謹(jǐn)細(xì)致,正式專業(yè)。
- 諷刺型 ??:毒舌吐槽,專治不服("這代碼是用腳寫的嗎?")
- 紳士型 ??:溫柔建議,如沐春風(fēng)("或許這里可以再優(yōu)化一下呢~")
- 幽默型 ??:搞笑點(diǎn)評(píng),快樂改碼("這段 if-else 比我的相親經(jīng)歷還曲折!")
工作原理
當(dāng)用戶在 GitLab 上提交代碼(如 Merge Request 或 Push 操作)時(shí),GitLab 將自動(dòng)觸發(fā) webhook事件,調(diào)用本系統(tǒng)的接口。系統(tǒng)隨后通過第三方大模型對(duì)代碼進(jìn)行審查,并將審查結(jié)果直接反饋到對(duì)應(yīng)的 Merge Request 或 Commit 的Note 中,便于團(tuán)隊(duì)查看和處理。
以上均為官方描述,下面進(jìn)行實(shí)戰(zhàn)部署操作。
部署實(shí)戰(zhàn)
官方給了兩種部署方案,分別是Docker部署和本地Python環(huán)境部署,我們采用的是第一種,并且根據(jù)實(shí)戰(zhàn)操作對(duì)部分內(nèi)容進(jìn)行了修改。
1. 前期環(huán)境準(zhǔn)備
操作系統(tǒng):centos7
Docker版本:24.0.0
Docker-Compose版本:v2.28.0
git版本:1.8.3.1
Docker國(guó)內(nèi)鏡像源設(shè)置:
vim /etc/docker/daemon.json
將daemon.json改為如下內(nèi)容:
{ "registry-mirrors": ["https://registry.docker-cn.com","https://pee6w651.mirror.aliyuncs.com"], "live-restore": true }
保存成功后,運(yùn)行如下命令進(jìn)行重新加載:
systemctl daemon-reload systemctl restart docker
2.獲取源碼
實(shí)戰(zhàn)命令(由于訪問GitHub經(jīng)常超時(shí)或者時(shí)間較長(zhǎng)):
cd /opt git clone https://gitcode.com/gh_mirrors/ai/AI-Codereview-Gitlab.git cd AI-Codereview-Gitlab
官方命令:
cd /opt git clone https://github.com/sunmh207/AI-Codereview-Gitlab.git cd AI-Codereview-Gitlab
3. 配置文件
獲取源碼后,在AI-Codereview-Gitlab目錄下,創(chuàng)建配置文件,執(zhí)行如下命令:
cp conf/.env.dist conf/.env vim conf/.env
編輯 conf/.env 文件,配置以下關(guān)鍵參數(shù):
大模型供應(yīng)商配置參數(shù),此處采用本地ollama部署的Deepseek:32B的大模型,因此修改如下參數(shù)部分:
#大模型供應(yīng)商配置,支持 deepseek, openai,zhipuai,qwen 和 ollama LLM_PROVIDER=ollama ... #OllaMA settings; 注意: 如果使用 Docker 部署,127.0.0.1 指向的是容器內(nèi)部的地址。請(qǐng)將其替換為實(shí)際的 Ollama服務(wù)器IP地址。 OLLAMA_API_BASE_URL=http://127.0.0.1:11434 OLLAMA_API_MODEL=deepseek-r1:32b ...
Gitlab配置,由于本地GitLab端口不是默認(rèn)80,因此修改如下參數(shù)部分:
#Gitlab配置 GITLAB_URL=http://192.168.1.111:9080/ #部分老版本Gitlab webhook不傳遞URL,需要開啟此配置,示例:https://gitlab.example.com #GITLAB_ACCESS_TOKEN={YOUR_GITLAB_ACCESS_TOKEN} #系統(tǒng)會(huì)優(yōu)先使用此GITLAB_ACCESS_TOKEN,如果未配置,則使用Webhook 傳遞的Secret Token
同時(shí)還需要修改api.py文件內(nèi)容,修改內(nèi)容如下:
將 def handle_github_webhook(event_type, data): # 獲取GitHub配置 github_token = os.getenv('GITHUB_ACCESS_TOKEN') or request.headers.get('X-GitHub-Token') ... 改為: def handle_github_webhook(event_type, data): # 獲取GitHub配置 github_token = os.getenv('GITHUB_ACCESS_TOKEN') ...
推送配置,由于本次沒有設(shè)置企微或釘釘推送,因此未進(jìn)行相關(guān)配置,有需求根據(jù)env中的提示進(jìn)行配置。
4. 鏡像修改
官方配置的鏡像源部分位于境外,導(dǎo)致部署過程中下載較慢或者網(wǎng)絡(luò)異常,因此需要修改docker-compose.yml和Dockerfile中的部分參數(shù),具體如下:
修改docker-compose.yml中的image參數(shù):
修改Dockerfile中Python 基礎(chǔ)鏡像和依賴源參數(shù):
# 使用官方的 Python 基礎(chǔ)鏡像改為swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.10-slim國(guó)內(nèi) FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.10-slim AS base ... # 安裝依賴加上國(guó)內(nèi)源 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/
修改完成后進(jìn)行保存。
5. 啟動(dòng)服務(wù)
docker-compose up -d
6. 驗(yàn)證部署
- 主服務(wù)驗(yàn)證:
- 訪問 http://your-server-ip:5001
- 顯示 "The code review server is running." 說明服務(wù)啟動(dòng)成功。
- Dashboard 驗(yàn)證:
- 訪問 http://your-server-ip:5002
- 看到一個(gè)審查日志頁面,說明 Dashboard 啟動(dòng)成功。
7. 配置 GitLab Webhook
創(chuàng)建Access Token
方法一:在 GitLab 個(gè)人設(shè)置中,創(chuàng)建一個(gè) Personal Access Token。
方法二:在 GitLab 項(xiàng)目設(shè)置中,創(chuàng)建Project Access Token。
注:創(chuàng)建的Access Token需要復(fù)制后單獨(dú)保存,否則無法再次獲取。
配置 Webhook
在 GitLab 項(xiàng)目設(shè)置中,配置 Webhook:
- URL:http://your-server-ip:5001/review/webhook
- Trigger Events:勾選 Push Events 和 Merge Request Events (不要勾選其它Event)
- Secret Token:上面配置的 Access Token(可選)
備注
- Token使用優(yōu)先級(jí)
- 系統(tǒng)優(yōu)先使用 .env 文件中的 GITLAB_ACCESS_TOKEN。
- 如果 .env 文件中沒有配置 GITLAB_ACCESS_TOKEN,則使用 Webhook 傳遞的Secret Token。 - 網(wǎng)絡(luò)訪問要求
- 請(qǐng)確保 GitLab 能夠訪問本系統(tǒng)。
- 若內(nèi)網(wǎng)環(huán)境受限,建議將系統(tǒng)部署在外網(wǎng)服務(wù)器上。
8. 配置消息推送
配置釘釘推送
在釘釘群中添加一個(gè)自定義機(jī)器人,獲取 Webhook URL。
更新 .env 中的配置:
#釘釘配置 DINGTALK_ENABLED=1 #0不發(fā)送釘釘消息,1發(fā)送釘釘消息 DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx #替換為你的Webhook URL
企業(yè)微信和飛書推送配置類似。
最終效果
到此這篇關(guān)于基于docker的AI-Codereview-Gitlab部署實(shí)戰(zhàn)教程的文章就介紹到這了,更多相關(guān)docker AI-Codereview-Gitlab部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何刪除docker-register鏡像及none無效鏡像詳解
這篇文章主要給大家介紹了關(guān)于如何刪除docker-register鏡像及none無效鏡像的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09教你使用docker安裝elasticsearch和head插件的方法
這篇文章主要介紹了docker安裝elasticsearch和head插件,安裝時(shí)需要下載鏡像和修改系統(tǒng)參數(shù),本文分流程給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Docker?Desktop常見的幾種啟動(dòng)失敗問題解決方法
使用Docker Desktop 可以很方便的啟用 Kubernetes,下面這篇文章主要給大家介紹了關(guān)于Docker?Desktop常見的幾種啟動(dòng)失敗問題解決方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題
本篇文章主要介紹了解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04docker安裝redis掛載容器卷同時(shí)開啟持久化
本文主要介紹了docker安裝redis掛載容器卷同時(shí)開啟持久化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06SpringBoot打包成Docker鏡像的項(xiàng)目實(shí)踐
Spring Boot和Docker,可以方便地將應(yīng)用程序部署到不同的環(huán)境中,本文主要介紹了SpringBoot打包成Docker鏡像的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03docker-compose如何實(shí)現(xiàn)滾動(dòng)更新
這篇文章主要介紹了docker-compose如何實(shí)現(xiàn)滾動(dòng)更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05