Files
InsightReply/docs/DEPLOYMENT.md
zs 6e595b4efb
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 42s
docs: add deployment strategy and guidelines
2026-02-28 20:25:03 +08:00

70 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# InsightReply 部署与发布指南
本文档记录了 InsightReply 项目在生产环境下的自动化持续部署 (CI/CD) 策略。
由于项目由后端 (Go) 和前端浏览器扩展 (Vue) 组成,为了保证构建速度并解耦故障,我们采用了**前后端分离**的部署工作流。
---
## 🏗 CI/CD 架构方案
我们的自动部署工作流依赖于 Gitea Actions运行在 `main` 分支的推送动作上。
### 1. 后端自动化部署 (Docker)
**工作流文件**`.gitea/workflows/backend-deploy.yml`
**触发条件**:当推送代码到 `main` 分支,且 `server/**` 目录有变更时触发。
**执行流程**
1. **获取代码并安装 Go 1.22 环境**
2. **交叉编译**:在 Runner 上编译出适用于 Linux ARM64 的可执行文件 `server_bin`
3. **准备部署包**:将可执行文件、`Dockerfile``docker-compose.yml` 收集到部署文件夹。
4. **Rsync 同步**:将文件同步到生产服务器 (`144.24.60.0`) 的 `/var/admin/InsightReply/server/` 目录下。
5. **平滑重启服务**:通过 SSH 远程执行 `docker-compose up -d --build`,实现不宕机更新。
**服务器端准备工作**
* 必须在目标服务器上安装 Docker 和 Docker Compose。
* (可选)如果在服务端需要提供环境变量给容器,请在 `/var/admin/InsightReply/server/` 目录下创建一个 `.env` 文件。
---
### 2. 前端浏览器扩展构建打包
**工作流文件**`.gitea/workflows/extension-build.yml`
**触发条件**:当推送代码到 `main` 分支,且 `extension/**` 目录有变更时触发。
**执行流程**
1. **获取代码并安装 Node.js 20 环境**
2. **依赖与构建**:执行 `npm install``npm run build`,编译 Vite/Vue 产物。
3. **打包产物**:将生成的 `dist` 目录打包为 `insight-reply-extension.zip`
4. **Gitea Artifacts**:将生成的 zip 包上传为当前构建的 Artifacts。
*(后续需要上架 Chrome Web Store 时,可在此流程增加 API 上传步骤。)*
---
### 3. 多环境与全局发布 (规划中)
随着产品演进,当需要打 Tag 发版(如发布 `v1.0.0`)时,我们可以添加一个新的工作流:
**触发条件**:当推送符合 `v*` 规则的 Tag 时触发。
**预期行为**:利用 Gitea Release 机制,自动附带当次的前后端编译产物,作为固定资产留存。
## 🔑 凭证管理 (Secrets)
要使自动化部署正常运行,请在此 Gitea 仓库的 `Settings -> Actions -> Secrets` 中配置以下环境变量:
* `USAARMLOGIN_SSH_KEY`: 用于连接到部署目标服务器 (`144.24.60.0`) 的 SSH 私钥。
---
## 🔧 服务端运维常用命令 (后端)
部署完成后,如果你需要登录目标服务器进行人工排查:
```bash
cd /var/admin/InsightReply/server/
# 查看应用运行状态
docker-compose ps
# 查看应用最新日志
docker-compose logs -f insight-reply-server
# 重启应用服务
docker-compose restart insight-reply-server
```