210 lines
4.5 KiB
Markdown
210 lines
4.5 KiB
Markdown
|
|
# RuoYi-Cloud DevOps 自动化部署系统
|
|||
|
|
|
|||
|
|
## 简介
|
|||
|
|
|
|||
|
|
这是一个基于 Python 的 Git 仓库监听和自动化部署系统,用于监听多个 Git 子仓库的提交,并自动触发构建和部署流程。
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
- ✅ 监听多个 Git 仓库的指定分支
|
|||
|
|
- ✅ 检测到新提交自动触发部署
|
|||
|
|
- ✅ 支持 Java 和 Node.js 项目构建
|
|||
|
|
- ✅ 自动复制构建产物到 Docker 目录
|
|||
|
|
- ✅ 自动执行 Docker Compose 部署
|
|||
|
|
- ✅ 自动提交子模块更新到主仓库
|
|||
|
|
- ✅ 完整的日志记录
|
|||
|
|
|
|||
|
|
## 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
.devops/
|
|||
|
|
├── config.yaml # 配置文件
|
|||
|
|
├── monitor.py # Git 监听器
|
|||
|
|
├── deployer.py # 部署执行器
|
|||
|
|
├── start.sh # 启动脚本
|
|||
|
|
├── scripts/ # 部署脚本目录
|
|||
|
|
│ ├── deploy-java.sh # Java 服务部署脚本
|
|||
|
|
│ ├── deploy-ui.sh # UI 部署脚本
|
|||
|
|
│ └── deploy-common.sh # 通用函数库
|
|||
|
|
└── logs/ # 日志目录
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 环境要求
|
|||
|
|
|
|||
|
|
- Python 3.6+
|
|||
|
|
- Git
|
|||
|
|
- Docker & Docker Compose
|
|||
|
|
- Maven (Java 项目)
|
|||
|
|
- Node.js & npm (前端项目)
|
|||
|
|
|
|||
|
|
## 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装 Python 依赖
|
|||
|
|
pip3 install PyYAML
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 配置说明
|
|||
|
|
|
|||
|
|
编辑 `.devops/config.yaml` 文件:
|
|||
|
|
|
|||
|
|
### 1. 仓库配置
|
|||
|
|
|
|||
|
|
每个仓库需要配置以下信息:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
repositories:
|
|||
|
|
- name: ruoyi-auth # 仓库名称
|
|||
|
|
url: http://... # Git 仓库 URL
|
|||
|
|
branch: main # 监听的分支
|
|||
|
|
path: ruoyi-auth # 在主仓库中的路径
|
|||
|
|
type: java # 项目类型 (java/nodejs)
|
|||
|
|
deploy_script: deploy-java.sh # 部署脚本
|
|||
|
|
build_commands: # 构建命令列表
|
|||
|
|
- mvn clean package -DskipTests
|
|||
|
|
artifact_path: target/*.jar # 构建产物路径
|
|||
|
|
docker_path: docker/ruoyi/auth/jar # Docker 目录
|
|||
|
|
docker_service: ruoyi-auth # Docker Compose 服务名
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 监听配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
monitor:
|
|||
|
|
poll_interval: 60 # 轮询间隔(秒)
|
|||
|
|
enabled_repos: [] # 监听的仓库列表(空=全部)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 部署配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
deploy:
|
|||
|
|
docker_compose_path: ./docker/docker-compose.yml
|
|||
|
|
auto_commit: true # 是否自动提交子模块更新
|
|||
|
|
commit_message: "自动更新子模块: {repo_name} 到最新版本"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用方法
|
|||
|
|
|
|||
|
|
### 1. 启动持续监听
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用启动脚本
|
|||
|
|
bash .devops/start.sh
|
|||
|
|
|
|||
|
|
# 或直接运行 Python
|
|||
|
|
python3 .devops/monitor.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 执行一次检查
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 .devops/monitor.py --once
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 指定配置文件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 .devops/monitor.py --config /path/to/config.yaml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 工作流程
|
|||
|
|
|
|||
|
|
1. **监听器检测到子仓库有新提交**
|
|||
|
|
2. **进入 runtime 目录**
|
|||
|
|
3. **克隆/更新主仓库**(如果不存在)
|
|||
|
|
4. **初始化所有子模块**
|
|||
|
|
5. **进入特定子模块目录**
|
|||
|
|
6. **拉取最新代码**
|
|||
|
|
7. **执行构建命令**(mvn/npm)
|
|||
|
|
8. **复制构建产物到 docker 目录**
|
|||
|
|
9. **执行 docker-compose 部署**
|
|||
|
|
10. **回到主仓库,提交子模块更新**
|
|||
|
|
11. **推送到远程主仓库**
|
|||
|
|
|
|||
|
|
## 日志
|
|||
|
|
|
|||
|
|
日志文件位置:`.devops/logs/devops.log`
|
|||
|
|
|
|||
|
|
日志级别可在配置文件中设置:
|
|||
|
|
- DEBUG:详细调试信息
|
|||
|
|
- INFO:一般信息(默认)
|
|||
|
|
- WARNING:警告信息
|
|||
|
|
- ERROR:错误信息
|
|||
|
|
|
|||
|
|
## 部署脚本说明
|
|||
|
|
|
|||
|
|
### deploy-java.sh
|
|||
|
|
|
|||
|
|
Java 服务部署脚本,执行以下操作:
|
|||
|
|
1. 重新构建 Docker 镜像
|
|||
|
|
2. 启动 Docker 服务
|
|||
|
|
3. 检查服务状态
|
|||
|
|
|
|||
|
|
### deploy-ui.sh
|
|||
|
|
|
|||
|
|
前端 UI 部署脚本,执行以下操作:
|
|||
|
|
1. 重启 Nginx 服务
|
|||
|
|
2. 检查服务状态
|
|||
|
|
|
|||
|
|
### deploy-common.sh
|
|||
|
|
|
|||
|
|
通用函数库,提供:
|
|||
|
|
- 日志输出函数
|
|||
|
|
- 命令检查函数
|
|||
|
|
- Docker 检查函数
|
|||
|
|
- 健康检查函数
|
|||
|
|
|
|||
|
|
## 故障排查
|
|||
|
|
|
|||
|
|
### 1. 监听器无法启动
|
|||
|
|
|
|||
|
|
检查 Python 依赖是否安装:
|
|||
|
|
```bash
|
|||
|
|
pip3 list | grep PyYAML
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 构建失败
|
|||
|
|
|
|||
|
|
查看日志文件:
|
|||
|
|
```bash
|
|||
|
|
tail -f .devops/logs/devops.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Docker 部署失败
|
|||
|
|
|
|||
|
|
检查 Docker 服务是否运行:
|
|||
|
|
```bash
|
|||
|
|
docker info
|
|||
|
|
docker-compose ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Git 操作失败
|
|||
|
|
|
|||
|
|
检查 Git 配置和权限:
|
|||
|
|
```bash
|
|||
|
|
git config --list
|
|||
|
|
ssh -T git@your-git-server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. 确保有足够的磁盘空间用于 runtime 目录
|
|||
|
|
2. 首次运行会克隆主仓库,可能需要较长时间
|
|||
|
|
3. 构建过程可能需要较长时间,请耐心等待
|
|||
|
|
4. 建议在测试环境先验证配置正确性
|
|||
|
|
5. 定期清理 runtime 目录和日志文件
|
|||
|
|
|
|||
|
|
## 扩展功能
|
|||
|
|
|
|||
|
|
可以根据需要添加:
|
|||
|
|
- 钉钉/企业微信通知
|
|||
|
|
- Web 管理界面
|
|||
|
|
- 部署回滚功能
|
|||
|
|
- 健康检查和监控
|
|||
|
|
- 多环境支持
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
本项目遵循 MIT 许可证
|