mirror of
https://github.com/KingHWJ/WeReadBoard.git
synced 2026-11-03 18:24:58 +08:00
ci(deploy): 改为 GitHub Webhook 触发部署
This commit is contained in:
1 parent
69bfe3ce0e
commit
469630e7da
11 files changed
+267
-78
No files matched your search
+5
-17
@@ -109,7 +109,7 @@ python3 -c 'import secrets; print(secrets.token_urlsafe(48))'
|
||||
|
||||
应用本身未实现登录尝试限流。公网部署还应在 Nginx 或其他可信入口对 `POST /auth/login` 配置频率限制,不能信任客户端自行传入的转发 IP。
|
||||
|
||||
## GitHub 自动部署
|
||||
## GitHub Webhook 自动部署
|
||||
|
||||
服务器部署使用根目录的 `deploy.sh`。脚本会先拉取指定分支,再检测 Python 环境;若项目 `.venv` 不存在,会自动用系统 `python3` 或 `python` 创建 `.venv`,随后安装 `requirements.txt`、按顺序执行 `migrations/*.sql`,并重启 systemd 服务。
|
||||
|
||||
@@ -121,21 +121,9 @@ SERVICE_NAME=weread.service
|
||||
VENV_DIR=/opt/weread-board/WeReadBoard/.venv
|
||||
```
|
||||
|
||||
GitHub Actions 文件位于 `.github/workflows/deploy.yml`,只在 `master` 分支 push 后触发,也支持手动触发;手动触发同样固定部署 `master`。仓库需要在 `Settings -> Secrets and variables -> Actions -> Secrets` 配置:
|
||||
GitHub Actions 文件位于 `.github/workflows/deploy.yml`,现在只负责测试和部署脚本检查。生产部署由 GitHub Webhook 触发:仓库 `Settings -> Webhooks` 的 Payload URL 配置为 `https://laohang.space/github/webhook`,Secret 与服务器 `/etc/weread-webhook.env` 中的 `GITHUB_WEBHOOK_SECRET` 一致,事件只选择 push。
|
||||
|
||||
| Secret | 说明 |
|
||||
|---|---|
|
||||
| `SERVER_HOST` | 服务器 IP |
|
||||
| `SERVER_PORT` | SSH 端口,未配置时按 22 处理 |
|
||||
| `SERVER_USER` | SSH 登录用户 |
|
||||
| `SERVER_SSH_KEY` | GitHub Actions 登录服务器用的私钥 |
|
||||
|
||||
可选配置放在 `Settings -> Secrets and variables -> Actions -> Variables`:
|
||||
|
||||
| Variable | 说明 |
|
||||
|---|---|
|
||||
| `DEPLOY_PATH` | 可选,默认 `/opt/weread-board/WeReadBoard` |
|
||||
| `SERVICE_NAME` | 可选,默认 `weread.service` |
|
||||
服务器 Webhook 服务使用 `/etc/weread-webhook.env`,至少配置 `GITHUB_WEBHOOK_SECRET`、`GITHUB_REPOSITORY=KingHWJ/WeReadBoard`、`DEPLOY_PROJECT_DIR` 和 `DEPLOY_SCRIPT`。代码内固定只允许 `master`,不接受环境变量覆盖。Nginx 将 HTTPS 请求转发至本机 `127.0.0.1:9001`;Webhook 会校验 HMAC-SHA256、仓库和分支,并在已有部署运行时拒绝重复启动。
|
||||
|
||||
如果在服务器手动部署,可执行:
|
||||
|
||||
@@ -173,8 +161,8 @@ node --check static/js/weapi.js
|
||||
|
||||
当前书架电子书列表每页显示 48 本,页码导航位于列表下方;翻页会替换当前页内容。右侧排序框提供最近阅读、书名升序、书名降序和作者升序,置顶书籍始终优先;切换书架状态或排序会回到第 1 页。此功能使用已加载的书架数据,不需要数据库迁移。
|
||||
|
||||
## master 自动部署
|
||||
## master Webhook 自动部署
|
||||
|
||||
`master` 分支 push 后由 `.github/workflows/deploy.yml` 触发部署。Actions 通过仓库 Secrets 登录服务器,在 `DEPLOY_PATH` 指定的目录先拉取 `origin/master`,再执行根目录 `deploy.sh`,完成加载可选 `.env`、安装 Python 依赖、执行全部数据库迁移和重启 systemd 服务。`dev` 和其他分支不会触发部署,部署脚本也会拒绝非 `master` 分支。详细配置见 [master 自动部署](deploy-master.md)。
|
||||
`master` 分支 push 后由 GitHub Webhook 通知服务器。服务器校验签名后,在固定项目目录执行根目录 `deploy.sh`,完成拉取 `origin/master`、加载可选 `.env`、安装 Python 依赖、执行全部数据库迁移和重启 systemd 服务。`dev` 和其他分支不会部署,部署脚本也会拒绝非 `master` 分支。详细配置见 [master Webhook 自动部署](deploy-master.md)。
|
||||
|
||||
本次数据库验收已在 8080 正式看板完成:页面新建目标后刷新仍可读取,编辑后再次刷新仍可读取,并已清理临时验收目标。读取目标列表未完成时,新建和编辑入口只显示目标页的加载或错误状态,不会打开保存表单。
|
||||
Reference in new issue
Block a user