a-cloud-all/.devops
孙小云 b0d956084c xx 2026-02-04 17:47:10 +08:00
..
__pycache__ xx 2026-01-10 14:25:01 +08:00
scripts 添加失败通知 2026-01-27 18:14:28 +08:00
.gitignore 忽略中间文件 2026-01-10 15:31:51 +08:00
README.md 添加 DevOps 自动化部署系统 2026-01-09 17:31:28 +08:00
config.yaml xx 2026-02-04 17:25:39 +08:00
monitor.py xx 2026-02-04 17:47:10 +08:00
pmstart.sh xx 2026-02-04 17:25:39 +08:00
start.sh 修改脚本 2026-02-03 15:53:59 +08:00

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

工作流程

  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 依赖是否安装:

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

注意事项

  1. 确保有足够的磁盘空间用于 runtime 目录
  2. 首次运行会克隆主仓库,可能需要较长时间
  3. 构建过程可能需要较长时间,请耐心等待
  4. 建议在测试环境先验证配置正确性
  5. 定期清理 runtime 目录和日志文件

扩展功能

可以根据需要添加:

  • 钉钉/企业微信通知
  • Web 管理界面
  • 部署回滚功能
  • 健康检查和监控
  • 多环境支持

许可证

本项目遵循 MIT 许可证