- 新增update_all_submodules方法,智能更新所有子模块到配置的分支 - 支持git submodule foreach批量更新(当所有子模块使用相同分支时) - 修改commit_submodule_update,推送前先执行git pull --rebase避免冲突 - 删除deploy方法中的自动提交功能,避免并发推送冲突 - 确保所有子模块在分支上而不是detached HEAD状态 |
||
|---|---|---|
| .. | ||
| scripts | ||
| README.md | ||
| config.yaml | ||
| deployer.py | ||
| monitor.py | ||
| start.sh | ||
README.md
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 (前端项目)
安装依赖
# 安装 Python 依赖
pip3 install PyYAML
配置说明
编辑 .devops/config.yaml 文件:
1. 仓库配置
每个仓库需要配置以下信息:
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. 监听配置
monitor:
poll_interval: 60 # 轮询间隔(秒)
enabled_repos: [] # 监听的仓库列表(空=全部)
3. 部署配置
deploy:
docker_compose_path: ./docker/docker-compose.yml
auto_commit: true # 是否自动提交子模块更新
commit_message: "自动更新子模块: {repo_name} 到最新版本"
使用方法
1. 启动持续监听
# 使用启动脚本
bash .devops/start.sh
# 或直接运行 Python
python3 .devops/monitor.py
2. 执行一次检查
python3 .devops/monitor.py --once
3. 指定配置文件
python3 .devops/monitor.py --config /path/to/config.yaml
工作流程
- 监听器检测到子仓库有新提交
- 进入 runtime 目录
- 克隆/更新主仓库(如果不存在)
- 初始化所有子模块
- 进入特定子模块目录
- 拉取最新代码
- 执行构建命令(mvn/npm)
- 复制构建产物到 docker 目录
- 执行 docker-compose 部署
- 回到主仓库,提交子模块更新
- 推送到远程主仓库
日志
日志文件位置:.devops/logs/devops.log
日志级别可在配置文件中设置:
- DEBUG:详细调试信息
- INFO:一般信息(默认)
- WARNING:警告信息
- ERROR:错误信息
部署脚本说明
deploy-java.sh
Java 服务部署脚本,执行以下操作:
- 重新构建 Docker 镜像
- 启动 Docker 服务
- 检查服务状态
deploy-ui.sh
前端 UI 部署脚本,执行以下操作:
- 重启 Nginx 服务
- 检查服务状态
deploy-common.sh
通用函数库,提供:
- 日志输出函数
- 命令检查函数
- Docker 检查函数
- 健康检查函数
故障排查
1. 监听器无法启动
检查 Python 依赖是否安装:
pip3 list | grep PyYAML
2. 构建失败
查看日志文件:
tail -f .devops/logs/devops.log
3. Docker 部署失败
检查 Docker 服务是否运行:
docker info
docker-compose ps
4. Git 操作失败
检查 Git 配置和权限:
git config --list
ssh -T git@your-git-server
注意事项
- 确保有足够的磁盘空间用于 runtime 目录
- 首次运行会克隆主仓库,可能需要较长时间
- 构建过程可能需要较长时间,请耐心等待
- 建议在测试环境先验证配置正确性
- 定期清理 runtime 目录和日志文件
扩展功能
可以根据需要添加:
- 钉钉/企业微信通知
- Web 管理界面
- 部署回滚功能
- 健康检查和监控
- 多环境支持
许可证
本项目遵循 MIT 许可证