更新 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
|
||||
max_size: 10485760 # 10MB
|
||||
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():
|
||||
return False
|
||||
|
||||
# 2. 更新子模块
|
||||
# 2. 部署基础设施(首次部署)
|
||||
if not self.deploy_infrastructure():
|
||||
return False
|
||||
|
||||
# 3. 更新子模块
|
||||
if not self.update_submodule(repo_config):
|
||||
return False
|
||||
|
||||
|
|
@ -273,3 +277,45 @@ class Deployer:
|
|||
except Exception as e:
|
||||
self.logger.error(f"部署过程中发生异常: {e}", exc_info=True)
|
||||
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
|
||||
# Java 服务部署脚本
|
||||
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
||||
# 注意:jar 文件已由 deployer.py 复制到 docker 目录
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
|
|
@ -29,11 +30,8 @@ echo "项目根目录: $PROJECT_ROOT"
|
|||
# 进入 docker 目录
|
||||
cd "$PROJECT_ROOT/docker"
|
||||
|
||||
echo "重新构建 Docker 镜像..."
|
||||
docker-compose build --no-cache "$DOCKER_SERVICE"
|
||||
|
||||
echo "启动服务..."
|
||||
docker-compose up -d "$DOCKER_SERVICE"
|
||||
echo "重新构建 Docker 镜像并启动服务..."
|
||||
docker-compose build --no-cache "$DOCKER_SERVICE" && docker-compose up -d "$DOCKER_SERVICE"
|
||||
|
||||
echo "等待服务启动..."
|
||||
sleep 5
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
# UI 前端部署脚本
|
||||
# 参数: $1=服务名称, $2=docker服务名, $3=docker-compose路径
|
||||
# 注意:dist 目录已由 deployer.py 复制到 docker/nginx/html/dist
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
|
|
@ -29,8 +30,8 @@ echo "项目根目录: $PROJECT_ROOT"
|
|||
# 进入 docker 目录
|
||||
cd "$PROJECT_ROOT/docker"
|
||||
|
||||
echo "重启 Nginx 服务..."
|
||||
docker-compose restart "$DOCKER_SERVICE"
|
||||
echo "重新构建 Docker 镜像并启动服务..."
|
||||
docker-compose build --no-cache "$DOCKER_SERVICE" && docker-compose up -d "$DOCKER_SERVICE"
|
||||
|
||||
echo "等待服务启动..."
|
||||
sleep 3
|
||||
|
|
|
|||
Loading…
Reference in New Issue