26f0cdd760
🧹 项目结构优化: - 删除重复和过时的文件 - 整理文档到docs目录结构 - 优化配置文件到configs目录 - 创建清晰的PROJECT_STRUCTURE.md 🔧 中间件配置: - 重启MySQL/Redis/Nacos中间件 - 使用现有数据目录,确保数据完整性 - 统一密码配置: MySQL(EmotionMuseum2025*#), Nacos(Peanut2817*#) 🌐 Nginx配置: - 配置前端路径: /emotion-museum - 配置API代理: /api/ -> 19000 - 配置WebSocket代理: /ws/ -> 19007 - 添加健康检查端点: /health 📋 部署脚本优化: - restart-middleware.sh - 中间件重启脚本 - setup-nginx.sh - Nginx配置脚本 - cleanup-project.sh - 项目清理脚本 - one-click-deploy.sh - 一键部署脚本 📖 文档完善: - DEPLOYMENT_FINAL.md - 最终部署指南 - PROJECT_STRUCTURE.md - 项目结构说明 - 完整的运维和故障排查指南 ✅ 生产环境就绪: - 中间件: MySQL/Redis/Nacos 运行正常 - Nginx: 反向代理配置完成 - 访问地址: http://47.111.10.27/emotion-museum - 健康检查: http://47.111.10.27/health 🎯 项目现状: - 10个微服务模块完整 - 前后端分离架构 - 容器化部署 - 统一配置管理 - 完整的部署和运维体系
7.1 KiB
7.1 KiB
情感博物馆 Jenkins Pipeline 配置指南
概述
本文档描述了优化后的Jenkins CI/CD流水线配置,采用分离式部署架构:
- 构建阶段: 在Jenkins服务器上编译打包所有微服务
- 部署阶段: 将jar包传输到远程应用服务器并进行容器化部署
部署脚本架构
1. 脚本分类
🔨 构建脚本
build-all.sh: 专门用于Jenkins构建阶段,编译所有微服务jar包- 特点: 仅在Jenkins服务器执行,不涉及远程操作
🚀 部署脚本
deploy-remote.sh: 专门用于远程部署,传输jar包并部署到应用服务器- 特点: 假设jar包已构建完成,专注于远程部署
🔄 综合脚本
deploy-all.sh: 支持多种模式的综合脚本- 模式:
full: 完整模式 (构建+部署)build: 仅构建模式deploy: 仅部署模式
2. 服务列表
所有脚本支持以下10个微服务:
| 服务名称 | 端口 | 描述 |
|---|---|---|
| emotion-gateway | 19000 | API网关服务 |
| emotion-user | 19001 | 用户管理服务 |
| emotion-ai | 19002 | AI聊天服务 |
| emotion-record | 19003 | 记录管理服务 |
| emotion-growth | 19004 | 成长跟踪服务 |
| emotion-explore | 19005 | 探索服务 |
| emotion-reward | 19006 | 奖励服务 |
| emotion-websocket | 19007 | WebSocket服务 |
| emotion-auth | 19008 | 认证服务 |
| emotion-stats | 19009 | 统计服务 |
Jenkins Pipeline 配置
1. 推荐的Pipeline配置
方案一:分离式Pipeline (推荐)
pipeline {
agent any
environment {
DEPLOY_ENV = 'test'
PROJECT_NAME = 'emotion-museum'
REMOTE_HOST = 'root@47.111.10.27'
}
stages {
stage('Checkout') {
steps {
git branch: 'master', url: 'your-git-repo-url'
}
}
stage('Build') {
steps {
dir('backend') {
sh './build-all.sh'
}
}
post {
always {
// 归档构建产物
archiveArtifacts artifacts: 'backend/*/target/*.jar', fingerprint: true
}
}
}
stage('Deploy to Remote') {
steps {
dir('backend') {
sh './deploy-remote.sh'
}
}
}
stage('Health Check') {
steps {
script {
// 等待服务启动
sleep 30
// 检查关键服务
def services = ['19000', '19001', '19002', '19008']
services.each { port ->
sh "curl -f http://47.111.10.27:${port}/actuator/health || exit 1"
}
}
}
}
}
post {
always {
// 发送部署结果通知
emailext (
subject: "部署结果: ${env.JOB_NAME} - ${env.BUILD_NUMBER}",
body: """
部署状态: ${currentBuild.result}
构建链接: ${env.BUILD_URL}
部署环境: ${env.DEPLOY_ENV}
""",
to: "your-email@example.com"
)
}
success {
echo '🎉 部署成功!'
}
failure {
echo '❌ 部署失败,请检查日志'
}
}
}
方案二:单一Pipeline
pipeline {
agent any
environment {
DEPLOY_ENV = 'test'
DEPLOY_MODE = 'full' // full, build, deploy
PROJECT_NAME = 'emotion-museum'
}
stages {
stage('Checkout') {
steps {
git branch: 'master', url: 'your-git-repo-url'
}
}
stage('Deploy') {
steps {
dir('backend') {
sh './deploy-all.sh'
}
}
}
}
}
2. 环境变量配置
在Jenkins中配置以下环境变量:
必需变量
# 部署配置
DEPLOY_ENV=test # 部署环境
DEPLOY_HOST=root@47.111.10.27 # 目标服务器
PROJECT_NAME=emotion-museum # 项目名称
# 远程路径配置
REMOTE_BUILD_DIR=/data/builds # jar包存储目录
REMOTE_DOCKER_DIR=/data/docker # Docker配置目录
可选变量
# 部署模式 (仅deploy-all.sh使用)
DEPLOY_MODE=full # full, build, deploy
# 数据库配置
MYSQL_HOST=47.111.10.27
MYSQL_PASSWORD=EmotionMuseum2025*#
# Nacos配置
NACOS_SERVER_ADDR=47.111.10.27:8848
NACOS_PASSWORD=Peanut2817*#
3. 多环境部署配置
测试环境
environment {
DEPLOY_ENV = 'test'
DEPLOY_HOST = 'root@47.111.10.27'
}
生产环境
environment {
DEPLOY_ENV = 'prod'
DEPLOY_HOST = 'root@production-server'
}
使用方法
1. 本地测试
仅构建
cd backend
./build-all.sh
仅部署 (需要先有jar包)
cd backend
./deploy-remote.sh
完整部署
cd backend
./deploy-all.sh
# 或指定模式
DEPLOY_MODE=full ./deploy-all.sh
2. Jenkins执行
分离式执行
# 构建阶段
./build-all.sh
# 部署阶段
./deploy-remote.sh
综合执行
# 根据DEPLOY_MODE环境变量决定执行模式
./deploy-all.sh
优势特点
1. 🔄 分离式架构
- 构建与部署分离: Jenkins服务器专注构建,应用服务器专注运行
- 资源优化: 避免在应用服务器上安装构建工具
- 安全性: 减少应用服务器的攻击面
2. 🛡️ 容错机制
- 单服务失败不影响其他服务: 继续部署其他服务
- 详细错误报告: 每个服务的部署状态和错误信息
- 回滚支持: 保留旧版本容器,支持快速回滚
3. 📊 监控与报告
- 实时日志: 详细的部署过程日志
- 健康检查: 自动验证服务启动状态
- 部署报告: 完整的部署统计和结果报告
4. 🔧 灵活配置
- 多模式支持: 支持仅构建、仅部署、完整部署
- 环境变量: 支持Jenkins环境变量覆盖
- 多环境: 支持test/prod等多环境部署
故障排查
1. 构建失败
# 检查Java和Maven版本
java -version
mvn -version
# 查看详细构建日志
./build-all.sh
2. 部署失败
# 检查SSH连接
ssh 'root@47.111.10.27' "echo 'test'"
# 检查远程Docker环境
ssh 'root@47.111.10.27' "docker --version"
# 查看容器日志
ssh 'root@47.111.10.27' "docker logs <service_name>"
3. 服务启动失败
# 检查端口占用
ssh 'root@47.111.10.27' "netstat -tlnp | grep <port>"
# 检查服务健康状态
curl -f http://47.111.10.27:<port>/actuator/health
联系支持
如遇到问题,请:
- 查看Jenkins构建日志
- 检查脚本执行日志
- 验证环境变量配置
- 联系开发团队并提供完整日志
文档版本: v2.0
更新时间: 2025-07-18
维护团队: 情感博物馆开发团队