From 44ebbd6f9e36ed803ac7b13ae5037cf2d14eacd6 Mon Sep 17 00:00:00 2001 From: zs Date: Sat, 28 Feb 2026 20:20:21 +0800 Subject: [PATCH] feat: decouple frontend and backend deployment workflows with Docker --- .gitea/workflows/backend-deploy.yml | 56 ++++++++++++++++++++++++++++ .gitea/workflows/extension-build.yml | 38 +++++++++++++++++++ server/Dockerfile | 15 ++++++++ server/docker-compose.yml | 18 +++++++++ 4 files changed, 127 insertions(+) create mode 100644 .gitea/workflows/backend-deploy.yml create mode 100644 .gitea/workflows/extension-build.yml create mode 100644 server/Dockerfile create mode 100644 server/docker-compose.yml diff --git a/.gitea/workflows/backend-deploy.yml b/.gitea/workflows/backend-deploy.yml new file mode 100644 index 0000000..ab9cb16 --- /dev/null +++ b/.gitea/workflows/backend-deploy.yml @@ -0,0 +1,56 @@ +name: Backend Deploy (Go + Docker) +on: + push: + branches: + - main + paths: + - 'server/**' + +jobs: + deploy: + runs-on: arm + container: + image: catthehacker/ubuntu:act-latest + steps: + - name: 获取代码 + uses: actions/checkout@v4 + + - name: 安装 Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: 编译后端可执行文件 + run: | + cd server + env GOOS=linux GOARCH=arm64 go build -o server_bin ./cmd/server + + - name: 准备部署文件 + run: | + mkdir -p deploy + cp server/server_bin deploy/ + cp server/Dockerfile deploy/ + cp server/docker-compose.yml deploy/ + + - name: 部署文件到服务器 + uses: up9cloud/action-rsync@master + env: + USER: root + HOST: 144.24.60.0 + KEY: ${{secrets.USAARMLOGIN_SSH_KEY}} + ARGS: -avz --delete + SSH_ARGS: "-p 22 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" + SOURCE: ./deploy/ + TARGET: /var/admin/InsightReply/server/ + VERBOSE: true + + - name: 重启服务 (Docker Compose) + uses: appleboy/ssh-action@v1.0.3 + with: + host: 144.24.60.0 + username: root + key: ${{secrets.USAARMLOGIN_SSH_KEY}} + script: | + cd /var/admin/InsightReply/server + # 停止并重新构建启动容器 (利用刚同步过来的新 server_bin 和 Dockerfile) + docker-compose up -d --build diff --git a/.gitea/workflows/extension-build.yml b/.gitea/workflows/extension-build.yml new file mode 100644 index 0000000..d540f95 --- /dev/null +++ b/.gitea/workflows/extension-build.yml @@ -0,0 +1,38 @@ +name: Extension Build & Release +on: + push: + branches: + - main + paths: + - 'extension/**' + +jobs: + build: + runs-on: arm + container: + image: catthehacker/ubuntu:act-latest + steps: + - name: 获取代码 + uses: actions/checkout@v4 + + - name: 安装 Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: 编译浏览器扩展 + run: | + cd extension + npm install + npm run build + + - name: 打包为 Zip 文件 + run: | + cd extension/dist + zip -r ../../insight-reply-extension.zip . + + - name: 上传构建产物 (Artifact) + uses: actions/upload-artifact@v4 + with: + name: insight-reply-extension + path: insight-reply-extension.zip diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 0000000..0d2cd89 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,15 @@ +FROM alpine:latest + +# 安装证书 (HTTPS请求需要) 和时区数据 +RUN apk --no-cache add ca-certificates tzdata + +WORKDIR /app + +# 拷贝由 CI 提前编译好的二进制文件 +# 这里假设 CI 已经将编译产物命名为 server_bin +COPY server_bin . +RUN chmod +x server_bin + +EXPOSE 8080 + +CMD ["./server_bin"] diff --git a/server/docker-compose.yml b/server/docker-compose.yml new file mode 100644 index 0000000..859fc1e --- /dev/null +++ b/server/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3.8' + +services: + insight-reply-server: + build: . + container_name: insight-reply-server + restart: always + ports: + - "8080:8080" + environment: + # 这里可以读取宿主机的环境变量或 .env 文件内容 + - OPENAI_API_KEY=${OPENAI_API_KEY} + networks: + - insight_network + +networks: + insight_network: + driver: bridge