文件
chengduzhongchuliang/ops/README.md

33 行
2.0 KiB
Markdown

# 推送自动部署
服务器每 60 秒检查两个仓库的 `master`,发现新提交后自动发布。其他分支不发布。
- 后端:`wikiboss/chengduzhongchuliang` → `/www/wwwroot/grain.gynhc.com`
- 大屏:`wikiboss/zhongculiang` 的 HTML、css、js、assets 源文件 → 后端 `public/screen`
前端直接发布静态源文件,不依赖提交者是否更新 dist。后端发布 application、public、extend、addons;public/screen 由前端仓库独立管理。数据库配置、站点配置、上传文件、环境变量、runtime、vendor 和框架不覆盖。SQL 文件不会自动导入,数据库结构变更需要单独迁移。
脚本使用独立 Git 缓存,不重置网站目录内原有 Git 工作区。变更先备份,PHP 语法检查通过后逐文件替换,接口和页面检查失败会恢复本轮文件,下一轮会重试。前后端分别记录部署结果。
服务器文件:
- 程序:`/opt/grain-auto-deploy/auto_deploy.py`
- 配置:`/etc/grain-auto-deploy.json`
- 版本及文件清单:`/var/lib/grain-auto-deploy/backend.json`、`frontend.json`
- 备份:`/var/lib/grain-auto-deploy/backups/`
- 日志:`/var/log/grain-auto-deploy.log`,以及 `journalctl -u grain-auto-deploy.service`
运维命令:
```sh
systemctl list-timers grain-auto-deploy.timer
systemctl start grain-auto-deploy.service
systemctl stop grain-auto-deploy.timer # 暂停后续自动发布
systemctl start grain-auto-deploy.timer # 恢复
tail -n 60 /var/log/grain-auto-deploy.log
```
首次安装需将程序、service、timer 文件安装到上述位置,写入部署配置并运行 `systemctl daemon-reload` 和 `systemctl enable --now grain-auto-deploy.timer`。程序以网站用户 www 运行,仅开放站点、状态、备份和日志的写权限,Git 工作区及线上配置额外设为只读。配置文件由 root:www 持有,权限 0640;程序及 systemd 单元仅 root 可修改。普通业务推送不会替换正在执行的部署程序。
验证:`python3 -m unittest discover -s ops -p test_auto_deploy.py`。