mirror of
https://github.com/KingHWJ/WeReadBoard.git
synced 2026-11-03 18:24:58 +08:00
ci(deploy): 添加 dev 自动部署脚本
This commit is contained in:
1 parent
e5d1b7fa42
commit
bbc4bdd140
8 files changed
+284
-2
No files matched your search
@@ -0,0 +1,65 @@
|
||||
# dev 自动部署
|
||||
|
||||
GitHub Actions workflow 位于 `.github/workflows/deploy.yml`。每次 `dev` 分支 push 后,Actions 会通过 SSH 登录服务器,在部署目录执行根目录 `deploy.sh`,拉取最新 `dev`、安装依赖、执行阅读目标表迁移并重启服务。
|
||||
|
||||
## GitHub 配置
|
||||
|
||||
已配置的仓库 Secrets:
|
||||
|
||||
- `SERVER_HOST`
|
||||
- `SERVER_PORT`
|
||||
- `SERVER_SSH_KEY`
|
||||
- `SERVER_USER`
|
||||
|
||||
可选再配置两个仓库 Variables:
|
||||
|
||||
- `DEPLOY_PATH`:服务器上的项目目录,例如 `/opt/WeReadBoard`
|
||||
- `SERVICE_NAME`:systemd 服务名,例如 `weread.service`
|
||||
|
||||
未配置 Variables 时,workflow 默认使用 `/opt/weread-board/WeReadBoard` 和 `weread.service`。
|
||||
|
||||
## 服务器要求
|
||||
|
||||
服务器部署目录需要已经是本仓库的 Git checkout,并且能访问 `origin/dev`。运行服务的环境变量仍按现有应用配置,例如 `WEREAD_API_KEY`、`WEREAD_DB_HOST`、`WEREAD_DB_PORT`、`WEREAD_DB_USER`、`WEREAD_DB_PASSWORD` 和 `WEREAD_DB_NAME`。
|
||||
|
||||
如果这些变量放在项目目录的 `.env` 文件中,部署脚本会先加载 `.env`,再执行数据库迁移。SSH 用户需要能执行 `systemctl restart <服务名>`;非 root 用户需要配置免密 `sudo systemctl restart/status <服务名>`。
|
||||
|
||||
`deploy.sh` 会执行:
|
||||
|
||||
```bash
|
||||
git fetch origin
|
||||
git checkout dev
|
||||
git pull --ff-only origin dev
|
||||
python3 -m venv .venv # 仅 .venv 不存在时执行
|
||||
.venv/bin/python -m pip install -r requirements.txt
|
||||
# 读取 api_v2.MYSQL_CONFIG 后执行 migrations/001_reading_goals.sql
|
||||
sudo systemctl restart "$SERVICE_NAME"
|
||||
```
|
||||
|
||||
其中迁移实际通过 `api_v2.MYSQL_CONFIG` 读取数据库配置并执行 SQL 文件;SQL 使用 `CREATE TABLE IF NOT EXISTS`,可重复执行。
|
||||
|
||||
## systemd 示例
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=WeReadBoard
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/weread-board/WeReadBoard
|
||||
Environment=WEREAD_API_KEY=wrk-xxxxxxxx
|
||||
Environment=WEREAD_DB_HOST=127.0.0.1
|
||||
Environment=WEREAD_DB_PORT=3306
|
||||
Environment=WEREAD_DB_USER=weread
|
||||
Environment=WEREAD_DB_PASSWORD=change-me
|
||||
Environment=WEREAD_DB_NAME=weread
|
||||
Environment=PORT=8770
|
||||
ExecStart=/opt/weread-board/WeReadBoard/.venv/bin/python app.py
|
||||
Restart=always
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
如果服务名或部署目录不同,在仓库 Variables 中调整 `SERVICE_NAME` 和 `DEPLOY_PATH`。
|
||||
Reference in new issue
Block a user