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