localGPT发布流程:版本发布和部署的标准化操作
🎯 发布流程概述
localGPT的发布流程采用标准化、可重复的操作模式,确保每次发布的质量和一致性。整个流程涵盖从版本准备到生产部署的全生命周期管理。
📋 版本发布检查清单
发布前准备
- 版本号更新(遵循语义化版本规范)
- 更新CHANGELOG.md文件
- 所有测试用例通过
- 文档同步更新
- 依赖包安全检查
构建验证
- Docker镜像构建成功
- 前端构建无警告
- Python包依赖解析正常
- 系统健康检查通过
部署验证
- 容器启动时间符合预期
- 所有服务健康状态正常
- 文档索引功能正常
- 聊天交互响应正常
🔄 标准化发布流程
1. 版本号管理
localGPT采用语义化版本控制(SemVer)规范:
| 版本类型 | 格式 | 示例 | 说明 |
|---|---|---|---|
| 主版本号 | MAJOR.0.0 | 1.0.0 | 不兼容的API修改 |
| 次版本号 | MAJOR.MINOR.0 | 1.1.0 | 向下兼容的功能性新增 |
| 修订号 | MAJOR.MINOR.PATCH | 1.1.1 | 向下兼容的问题修正 |
版本更新操作:
# 更新package.json版本号
npm version patch # 修订版本
npm version minor # 次版本
npm version major # 主版本
# 或者手动更新
sed -i 's/"version": "0.1.0"/"version": "0.1.1"/' package.json
2. 代码冻结与测试阶段
功能冻结:
# 创建发布分支
git checkout -b release/v0.1.1
# 冻结代码,只接受bug修复
git flow release start v0.1.1
全面测试套件执行:
# 运行单元测试
python -m pytest backend/test_backend.py -v
python -m pytest rag_system/tests/ -v
# 运行集成测试
python test_ollama_connectivity.py
python system_health_check.py
# 前端测试
npm run lint
npm run build
3. Docker镜像构建与发布
多架构镜像构建:
# 构建所有服务的Docker镜像
docker build -f Dockerfile.rag-api -t localgpt/rag-api:v0.1.1 .
docker build -f Dockerfile.backend -t localgpt/backend:v0.1.1 .
docker build -f Dockerfile.frontend -t localgpt/frontend:v0.1.1 .
# 添加多架构支持(可选)
docker buildx build --platform linux/amd64,linux/arm64 -t localgpt/rag-api:v0.1.1 -f Dockerfile.rag-api .
镜像验证:
# 验证镜像完整性
docker run --rm localgpt/rag-api:v0.1.1 python -c "import rag_system; print('✅ RAG系统导入成功')"
docker run --rm localgpt/backend:v0.1.1 python -c "import backend; print('✅ 后端服务导入成功')"
# 检查镜像大小
docker images | grep localgpt
4. 部署配置更新
更新docker-compose.yml版本标签:
services:
rag-api:
image: localgpt/rag-api:v0.1.1 # 更新版本号
backend:
image: localgpt/backend:v0.1.1 # 更新版本号
frontend:
image: localgpt/frontend:v0.1.1 # 更新版本号
环境变量配置检查:
# 验证环境配置
grep -E "(OLLAMA_HOST|NODE_ENV|RAG_API_URL)" docker.env
grep -E "(PORT|HOST)" docker-compose.yml
5. 发布部署操作
蓝绿部署策略:
# 步骤1: 部署新版本到临时环境
docker compose -f docker-compose.yml --env-file docker.env up -d --build
# 步骤2: 健康检查
./start-docker.sh status
curl -f http://localhost:3000 && echo "✅ 前端服务正常"
curl -f http://localhost:8000/health && echo "✅ 后端服务正常"
curl -f http://localhost:8001/models && echo "✅ RAG API正常"
# 步骤3: 流量切换(无宕机部署)
docker compose stop frontend backend rag-api
docker compose up -d frontend backend rag-api
回滚方案:
# 快速回滚到上一个版本
docker compose stop
git checkout v0.1.0 # 回退到上一个标签
docker compose up -d
🏗️ 生产环境部署规范
基础设施要求
硬件资源配置:
# 推荐的生产环境配置
deploy:
resources:
limits:
memory: 8G
cpus: '4'
reservations:
memory: 4G
cpus: '2'
服务副本配置:
# 高可用部署配置
services:
rag-api:
deploy:
replicas: 3
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
backend:
deploy:
replicas: 2
frontend:
deploy:
replicas: 2
监控与日志
健康监控配置:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8001/models"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
日志管理:
# 日志收集配置
docker compose logs --tail=100 -f
docker compose logs --since=1h > deployment_logs.txt
# 错误日志监控
docker compose logs | grep -i error
docker compose logs | grep -i exception
🔧 发布后验证流程
功能验证清单
核心功能测试:
# 1. 文档上传测试
curl -X POST -F "file=@example.pdf" http://localhost:8001/upload
# 2. 索引创建测试
curl -X POST http://localhost:8001/indexes \
-H "Content-Type: application/json" \
-d '{"document_ids": ["doc1"], "index_name": "test_index"}'
# 3. 聊天功能测试
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{"message": "测试消息", "index_name": "test_index"}'
性能基准测试:
# 响应时间测试
time curl -s http://localhost:8001/models > /dev/null
# 负载测试(简单版本)
for i in {1..10}; do
curl -s http://localhost:3000 > /dev/null &
done
wait
质量指标监控
| 指标类别 | 监控项 | 预期值 | 告警阈值 |
|---|---|---|---|
| 可用性 | 服务健康状态 | 100% | < 99.9% |
| 性能 | API响应时间 | < 500ms | > 2000ms |
| 资源 | 内存使用率 | < 70% | > 85% |
| 资源 | CPU使用率 | < 60% | > 80% |
| 业务 | 文档处理成功率 | > 99% | < 95% |
🚀 自动化发布脚本
发布自动化脚本
完整发布脚本示例:
#!/bin/bash
# release.sh - localGPT自动化发布脚本
set -e # 遇到错误立即退出
VERSION=${1:-"patch"}
CURRENT_VERSION=$(node -p "require('./package.json').version")
echo "🚀 开始localGPT发布流程 - 当前版本: $CURRENT_VERSION"
# 步骤1: 版本号更新
echo "📦 更新版本号..."
npm version $VERSION
NEW_VERSION=$(node -p "require('./package.json').version")
echo "✅ 新版本号: $NEW_VERSION"
# 步骤2: 代码检查
echo "🔍 运行代码检查..."
npm run lint
python -m pylint rag_system/ backend/
# 步骤3: 测试套件
echo "🧪 运行测试套件..."
python -m pytest backend/test_backend.py -v
python system_health_check.py
# 步骤4: Docker镜像构建
echo "🐳 构建Docker镜像..."
docker build -f Dockerfile.rag-api -t localgpt/rag-api:$NEW_VERSION .
docker build -f Dockerfile.backend -t localgpt/backend:$NEW_VERSION .
docker build -f Dockerfile.frontend -t localgpt/frontend:$NEW_VERSION .
# 步骤5: 部署验证
echo "⚡ 部署验证..."
docker compose up -d
sleep 30 # 等待服务启动
# 健康检查
./start-docker.sh status
curl -f http://localhost:3000 && echo "✅ 前端服务正常"
curl -f http://localhost:8000/health && echo "✅ 后端服务正常"
# 步骤6: 创建Git标签
echo "🏷️ 创建发布标签..."
git tag -a v$NEW_VERSION -m "Release version $NEW_VERSION"
git push origin v$NEW_VERSION
echo "🎉 发布完成! 版本: $NEW_VERSION"
CI/CD集成配置
GitHub Actions示例:
name: LocalGPT Release Pipeline
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: |
npm ci
pip install -r requirements.txt
- name: Run tests
run: |
python -m pytest backend/test_backend.py -v
npm run lint
- name: Build Docker images
run: |
docker build -f Dockerfile.rag-api -t localgpt/rag-api:${{ github.ref_name }} .
docker build -f Dockerfile.backend -t localgpt/backend:${{ github.ref_name }} .
- name: Deploy to staging
run: |
docker compose up -d
./health-check.sh
📊 发布管理仪表板
发布状态监控
版本追踪表格
| 版本号 | 发布日期 | 状态 | 主要特性 | 问题数量 |
|---|---|---|---|---|
| v0.1.1 | 2024-03-15 | ✅ 生产环境 | 性能优化,bug修复 | 0 |
| v0.1.0 | 2024-03-10 | ✅ 稳定版本 | 初始发布,基础功能 | 2 |
| v0.0.9 | 2024-03-05 | 🔄 测试中 | 文档处理优化 | 1 |
🛡️ 应急预案与回滚
故障处理流程
紧急回滚操作:
#!/bin/bash
# emergency-rollback.sh
echo "🚨 执行紧急回滚..."
# 停止当前版本
docker compose down
# 回退到上一个稳定版本
git checkout v0.1.0
# 启动旧版本
docker compose up -d
echo "✅ 回滚完成,系统已恢复到v0.1.0"
问题诊断命令:
# 快速诊断脚本
./start-docker.sh status
docker compose logs --tail=50
curl -s http://localhost:8000/health | jq .
netstat -tulpn | grep -E '(3000|8000|8001)'
📈 发布 metrics 与改进
关键性能指标
| 指标 | 计算公式 | 目标值 |
|---|---|---|
| 发布成功率 | (成功发布次数 / 总发布次数) × 100% | > 95% |
| 平均修复时间 | 问题发现到修复的总时间 / 问题数量 | < 2小时 |
| 部署时长 | 从代码提交到生产环境就绪的时间 | < 30分钟 |
| 回滚率 | 需要回滚的发布次数 / 总发布次数 | < 5% |
持续改进循环
通过标准化的发布流程、自动化工具和严格的验证机制,localGPT确保每个版本都能稳定、可靠地交付到生产环境,同时保持快速的迭代能力和高质量的代码标准。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



