Commit Graph

21 Commits

Author SHA1 Message Date
xiaoquan 85547d7043 fix: 修复 pnpm 版本和 docker compose 命令
Deploy / deploy (push) Failing after 1m36s
## 修改内容
1. 所有 Dockerfile 中指定 pnpm@8(兼容 lockfileVersion 6.0)
2. 工作流使用 docker compose(V2)而不是 docker-compose

## 修复的问题
- pnpm-lock.yaml 版本不兼容
- 容器中缺少 docker-compose 命令

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 19:42:53 +08:00
xiaoquan ab7ff9a59b fix: 移除重复的 docker.sock 挂载
Deploy / deploy (push) Failing after 28s
2026-06-10 19:37:43 +08:00
xiaoquan 51de32d1de fix: 使用正确的 Runner 标签 self-hosted
Deploy / deploy (push) Failing after 26s
2026-06-10 19:16:50 +08:00
xiaoquan 89e5143395 fix: 修改 Runner 标签匹配 2026-06-10 19:15:24 +08:00
xiaoquan 147a25614f fix: 使用包含 Docker 的容器镜像运行 CI/CD
## 修改内容
- 添加 container 配置
- 使用 catthehacker/ubuntu:act-latest 镜像
- 该镜像预装了 docker、docker-compose 等工具

## 优点
- 不需要在 Runner 容器中安装工具
- 使用标准的 GitHub Actions 兼容镜像
- 更稳定可靠

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 19:02:57 +08:00
xiaoquan 32b4053ed3 fix: 支持 docker compose V2 版本
## 修改内容
- 使用 `docker compose` (V2,空格分隔)
- 备用方案:`docker-compose` (V1,连字符)
- 通过 || 运算符自动尝试两种版本

## 说明
- Docker Compose V2 已内置在 Docker 中
- 命令格式:docker compose(不是 docker-compose)
- 如果 V2 不可用,自动回退到 V1

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 18:02:19 +08:00
xiaoquan 5b3c599db6 feat: 使用外网 HTTPS 地址克隆代码
## 修改内容
- 使用 https://gitea.pinzhuhui.com/xiaoquan/rent.git
- 代码克隆到 /workspace/rent-deploy
- 首次运行自动克隆,后续自动 git pull

## 优点
- 使用外网地址,网络稳定
- HTTPS 协议,兼容性好
- 完全自动化,不需要手动配置

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:57:59 +08:00
xiaoquan bfc30fac22 feat: 最终 CI/CD 方案 - 手动克隆 + 自动部署
## 方案说明
由于 Gitea Runner 在 Docker 容器中无法访问宿主机文件系统和网络,
采用一次性手动配置 + 自动部署的方案

## 配置步骤(一次性)
1. SSH 登录服务器
2. 手动克隆代码到 /www/dk_project/dk_app/rent
3. 配置 Git 凭证(SSH 或 Token)

## 工作流程
1. 开发者 git push
2. CI/CD 自动触发
3. git pull 拉取最新代码
4. docker-compose build 构建
5. docker-compose up 部署

## 新增文档
- CICD_SETUP.md - 完整配置指南

## 优点
- 简单可靠
- 不依赖复杂的网络配置
- 代码在宿主机上,构建速度快

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:48:53 +08:00
xiaoquan 860ad35387 debug: 自动查找 Gitea 仓库路径
## 修改内容
- 尝试多个可能的 Gitea 仓库路径
- 如果都找不到,执行 find 命令搜索
- 输出搜索结果,方便确定正确路径

## 目的
- 找到服务器上 Gitea 仓库的实际位置
- 根据输出确定正确路径

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:43:10 +08:00
xiaoquan e1612f63db fix: 使用 Gitea 仓库文件路径,不走网络
## 问题
- 网络克隆一直超时
- Docker 容器访问 Gitea HTTP 端口不通

## 解决方案
- 直接使用宿主机文件系统中的 Gitea 仓库
- 路径:/www/dk_project/dk_app/gitea/gitea_P4dS/gitea/gitea/repositories/xiaoquan/rent.git
- 使用 git init + git remote add 方式
- 完全不走网络,只读取本地文件

## 优点
- 不依赖网络
- 速度极快
- 100% 可靠

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:40:05 +08:00
xiaoquan d5a44cc811 fix: 修改 git clone 地址,使用宿主机端口
## 问题
- Runner 容器无法访问 gitea_p4ds-gitea_P4dS-1:3000
- Docker 容器内网络不通

## 解决方案
- 使用 host.docker.internal:10082(Docker 宿主机)
- 备用方案:172.17.0.1:10082(Docker 网桥)
- 最后备用:localhost:10082

## 说明
- 10082 是 Gitea 映射到宿主机的端口
- Runner 容器通过宿主机端口访问 Gitea

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:32:21 +08:00
xiaoquan d51cb9d03d feat: CI/CD 自动克隆和更新代码
## 方案说明
- CI/CD 自动在 /tmp/rent-deploy 管理代码
- 首次运行自动克隆
- 后续运行自动 git pull 更新
- 不需要手动操作

## 工作流程
1. 检查代码目录是否存在
2. 不存在 → git clone
3. 已存在 → git fetch + git reset --hard
4. 执行 docker-compose 部署

## 优点
- 完全自动化
- 不依赖手动克隆
- 代码始终是最新的

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:21:20 +08:00
xiaoquan ab019f2d2a debug: 添加工作目录调试信息
## 调试内容
- 打印当前工作目录
- 列出目录内容
- 检查 deploy/docker 是否存在
- 如果不存在则报错退出

## 目的
- 确认 Gitea Runner 的工作目录结构
- 找出代码实际所在位置

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:10:17 +08:00
xiaoquan 8c6da556a2 fix: 极简化 CI/CD 工作流 - 让 Docker 处理所有构建
## 问题
- Runner 容器缺少 curl、node 等工具
- 在 Runner 容器中安装依赖复杂且不稳定

## 解决方案
- 移除所有 Node.js 安装和构建步骤
- 直接执行 docker-compose build
- 在 Dockerfile 中处理依赖安装和构建
- CI/CD 只负责部署流程控制

## 工作流程(极简)
1. docker-compose down(停止旧容器)
2. docker-compose build(构建新镜像,包含依赖安装和编译)
3. docker-compose up(启动新容器)

## 优点
- 工作流极简,只有部署逻辑
- 所有构建在 Docker 镜像中完成
- 不依赖 Runner 容器的环境
- 更稳定,更容易维护

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:08:16 +08:00
xiaoquan 733eb2419e fix: 简化 CI/CD 工作流,移除 git clone 步骤
## 问题
- git clone 在 Docker 容器内网络访问 Gitea 失败
- Runner 一直卡在 "Cloning into '.'" 步骤
- 代码已经在服务器上,不需要重复克隆

## 解决方案
- 移除所有 git clone 步骤
- 直接使用 Runner 工作目录中的代码(已由 Gitea 自动同步)
- 合并 install、build、deploy 为单个 job
- 根据分支条件执行不同的部署步骤

## 工作流程
1. 安装 Node.js 和 pnpm(如果没有)
2. 安装项目依赖
3. 构建所有应用
4. 根据分支部署:
   - test 分支 → 测试环境
   - prod 分支 → 生产环境

## 优点
- 简化流程,减少网络依赖
- 执行更快,不需要克隆代码
- 更稳定,避免网络超时问题

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 17:04:14 +08:00
xiaoquan 1b178eb69d fix: 优化 CI/CD git clone 步骤
## 修改内容
- 使用 GitHub Actions 上下文变量替代 bash 变量
- 添加工作目录清理,避免冲突
- 优化 Node.js 安装,检查是否已安装

## 变更说明
- $GITHUB_WORKSPACE - 工作目录路径
- ${{ github.server_url }} - Gitea 服务器 URL
- ${{ github.repository }} - 仓库路径
- ${{ github.sha }} - 提交 SHA

## 优点
- 使用 Gitea 原生变量,更可靠
- 清理工作目录,避免重复克隆冲突
- 检查 Node.js 是否已安装,避免重复安装

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 16:56:49 +08:00
xiaoquan 7bdcf07d56 fix: 修复 CI/CD 工作流 - 移除 actions/checkout 依赖
## 问题
- actions/checkout@v4 需要 Node.js 环境
- Gitea Act Runner 默认镜像没有 Node.js
- 导致 "Cannot find: node in PATH" 错误

## 解决方案
- 使用原生 git 命令代替 actions/checkout
- 在 install job 中安装 Node.js 环境
- 所有 checkout 步骤改为 git clone

## 优点
- 不依赖 GitHub Actions 插件
- 完全使用原生命令,更稳定
- 适合国内服务器环境

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 16:40:58 +08:00
xiaoquan 951569f6cc fix: 移除 CI/CD 工作流中的 GitHub Actions 缓存依赖
## 问题
- actions/cache@v4 需要访问 GitHub,在国内服务器上经常超时
- 导致 CI/CD 流程失败

## 解决方案
- 移除 actions/cache 依赖
- 每次构建时重新安装依赖(使用 pnpm 本地缓存)
- 简化工作流程,提高稳定性

## 影响
- 构建时间可能略微增加
- 但避免了网络超时问题
- pnpm 的本地 .pnpm-store 仍然提供缓存加速

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-10 16:32:12 +08:00
xiaoquan fefd64957d feat: 精简 CI/CD 密钥,业务密钥迁移到数据库管理
- Gitea Secrets 只保留 5 个基础密钥(DB密码、JWT、加密密钥)
- 删除 deploy.yml 中所有业务密钥的 secrets 注入
- docker-compose 移除业务环境变量,只保留 DB/JWT/ENCRYPTION_KEY
- 业务密钥(微信/支付宝/短信等)通过后台「系统密钥」页面管理
- 改用 export 方式注入环境变量,不再写 .env 文件
- 更新部署文档

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 12:06:43 +08:00
xiaoquan b358dbdab1 feat: 使用 Gitea Secrets 管理全部密钥
- deploy.yml 从 secrets 动态生成 .env,部署后自动删除
- docker-compose.prod.yml 支持全部业务配置注入(短信/微信/支付宝等)
- .env.example 只保留 GITEA_RUNNER_TOKEN,其他密钥全部迁移到 Secrets
- 更新 deploy/README.md 文档,完整列出 Secrets 配置清单

服务器上不再存储任何密码文件,安全性大幅提升

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 21:01:22 +08:00
xiaoquan 501adf7819 feat: 替换 GitLab 为 Gitea + Act Runner
- 删除 .gitlab-ci.yml
- 新增 .gitea/workflows/deploy.yml (Gitea Actions 工作流)
- 新增 deploy/docker/docker-compose.gitea.yml (Gitea + Act Runner)
- 更新 scripts/setup-server.sh 初始化脚本
- 更新 deploy/README.md 部署文档
- 更新 Makefile 新增 gitea-* 命令
- 更新 .env.example 新增 GITEA_RUNNER_TOKEN

Gitea 内存占用约 100MB,适合 4GB 小内存服务器

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 20:01:52 +08:00