更新 DevOps 系统以支持完整部署流程
- 添加基础设施服务配置(MySQL, Redis, Nacos) - 基础设施服务只部署一次,使用标记文件跟踪 - MySQL 部署前自动复制 SQL 文件 - deployer.py 已处理构建产物复制逻辑 - 部署脚本统一使用 docker-compose build && up - 所有操作在 runtime 目录下进行
This commit is contained in:
parent
790e182322
commit
ee2f8303aa
|
|
@ -208,3 +208,20 @@ logging:
|
||||||
file: .devops/logs/devops.log
|
file: .devops/logs/devops.log
|
||||||
max_size: 10485760 # 10MB
|
max_size: 10485760 # 10MB
|
||||||
backup_count: 5
|
backup_count: 5
|
||||||
|
|
||||||
|
# 基础设施服务配置(只部署一次)
|
||||||
|
infrastructure:
|
||||||
|
- name: ruoyi-mysql
|
||||||
|
docker_service: ruoyi-mysql
|
||||||
|
pre_deploy_commands:
|
||||||
|
- cp sql/ry_20250523.sql docker/mysql/db/
|
||||||
|
- cp sql/ry_config_20250902.sql docker/mysql/db/
|
||||||
|
deployed_flag: .devops/.deployed_mysql
|
||||||
|
|
||||||
|
- name: ruoyi-redis
|
||||||
|
docker_service: ruoyi-redis
|
||||||
|
deployed_flag: .devops/.deployed_redis
|
||||||
|
|
||||||
|
- name: ruoyi-nacos
|
||||||
|
docker_service: ruoyi-nacos
|
||||||
|
deployed_flag: .devops/.deployed_nacos
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,11 @@ class Deployer:
|
||||||
if not self.ensure_main_repo():
|
if not self.ensure_main_repo():
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# 2. 更新子模块
|
# 2. 部署基础设施(首次部署)
|
||||||
|
if not self.deploy_infrastructure():
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 3. 更新子模块
|
||||||
if not self.update_submodule(repo_config):
|
if not self.update_submodule(repo_config):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
@ -273,3 +277,45 @@ class Deployer:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.error(f"部署过程中发生异常: {e}", exc_info=True)
|
self.logger.error(f"部署过程中发生异常: {e}", exc_info=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def deploy_infrastructure(self):
|
||||||
|
"""部署基础设施服务(只部署一次)"""
|
||||||
|
if 'infrastructure' not in self.config:
|
||||||
|
return True
|
||||||
|
|
||||||
|
repo_path = self.runtime_path / 'a-cloud-all'
|
||||||
|
|
||||||
|
for infra in self.config['infrastructure']:
|
||||||
|
name = infra['name']
|
||||||
|
deployed_flag = repo_path / infra['deployed_flag']
|
||||||
|
|
||||||
|
# 检查是否已部署
|
||||||
|
if deployed_flag.exists():
|
||||||
|
self.logger.info(f"基础设施 {name} 已部署,跳过")
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.logger.info(f"部署基础设施: {name}")
|
||||||
|
|
||||||
|
# 执行预部署命令
|
||||||
|
if 'pre_deploy_commands' in infra:
|
||||||
|
for cmd in infra['pre_deploy_commands']:
|
||||||
|
if not self.run_command(cmd, cwd=repo_path):
|
||||||
|
self.logger.error(f"预部署命令失败: {cmd}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 部署服务
|
||||||
|
docker_service = infra['docker_service']
|
||||||
|
docker_dir = repo_path / 'docker'
|
||||||
|
|
||||||
|
cmd = f"docker-compose build --no-cache {docker_service} && docker-compose up -d {docker_service}"
|
||||||
|
if not self.run_command(cmd, cwd=docker_dir, timeout=1800):
|
||||||
|
self.logger.error(f"部署失败: {name}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 创建部署标记
|
||||||
|
deployed_flag.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
deployed_flag.touch()
|
||||||
|
|
||||||
|
self.logger.info(f"基础设施部署完成: {name}")
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Java 服务部署脚本
|
# Java 服务部署脚本
|
||||||
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
||||||
|
# 注意:jar 文件已由 deployer.py 复制到 docker 目录
|
||||||
|
|
||||||
set -e # 遇到错误立即退出
|
set -e # 遇到错误立即退出
|
||||||
|
|
||||||
|
|
@ -29,11 +30,8 @@ echo "项目根目录: $PROJECT_ROOT"
|
||||||
# 进入 docker 目录
|
# 进入 docker 目录
|
||||||
cd "$PROJECT_ROOT/docker"
|
cd "$PROJECT_ROOT/docker"
|
||||||
|
|
||||||
echo "重新构建 Docker 镜像..."
|
echo "重新构建 Docker 镜像并启动服务..."
|
||||||
docker-compose build --no-cache "$DOCKER_SERVICE"
|
docker-compose build --no-cache "$DOCKER_SERVICE" && docker-compose up -d "$DOCKER_SERVICE"
|
||||||
|
|
||||||
echo "启动服务..."
|
|
||||||
docker-compose up -d "$DOCKER_SERVICE"
|
|
||||||
|
|
||||||
echo "等待服务启动..."
|
echo "等待服务启动..."
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# UI 前端部署脚本
|
# UI 前端部署脚本
|
||||||
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
||||||
|
# 注意:dist 目录已由 deployer.py 复制到 docker/nginx/html/dist
|
||||||
|
|
||||||
set -e # 遇到错误立即退出
|
set -e # 遇到错误立即退出
|
||||||
|
|
||||||
|
|
@ -29,8 +30,8 @@ echo "项目根目录: $PROJECT_ROOT"
|
||||||
# 进入 docker 目录
|
# 进入 docker 目录
|
||||||
cd "$PROJECT_ROOT/docker"
|
cd "$PROJECT_ROOT/docker"
|
||||||
|
|
||||||
echo "重启 Nginx 服务..."
|
echo "重新构建 Docker 镜像并启动服务..."
|
||||||
docker-compose restart "$DOCKER_SERVICE"
|
docker-compose build --no-cache "$DOCKER_SERVICE" && docker-compose up -d "$DOCKER_SERVICE"
|
||||||
|
|
||||||
echo "等待服务启动..."
|
echo "等待服务启动..."
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue