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

2.9 KiB
Raw Blame History

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. 准备部署包:将可执行文件、Dockerfiledocker-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 installnpm 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 私钥。

🔧 服务端运维常用命令 (后端)

部署完成后,如果你需要登录目标服务器进行人工排查:

cd /var/admin/InsightReply/server/

# 查看应用运行状态
docker-compose ps

# 查看应用最新日志
docker-compose logs -f insight-reply-server

# 重启应用服务
docker-compose restart insight-reply-server