a-cloud-all/.devops/README.md

210 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 许可证