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
|
c243300670
|
feat: 添加 Webhook 部署方案
## 新增文件
- deploy/scripts/deploy.sh - 自动化部署脚本
- deploy/docker/WEBHOOK_SETUP.md - Webhook 配置完整指南
## 方案说明
放弃使用 Gitea Runner(Docker 容器环境限制太多)
改用 Webhook 直接在宿主机上执行部署脚本
## 工作流程
1. git push 触发 Gitea Webhook
2. Webhook 服务调用 deploy.sh
3. 脚本自动 git pull + docker-compose build + up
## 优点
- 简单可靠,不依赖容器环境
- 直接在宿主机执行,有完整的 Docker 访问权限
- 容易调试和维护
- 支持两种 Webhook 方式:webhook 工具或 PHP 脚本
## 配置方式
详见 WEBHOOK_SETUP.md 文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-10 18:05:05 +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
|
6f970af5bc
|
feat: 配置宝塔部署端口映射
## 修改内容
### 生产环境端口映射
- API 服务:3000 → 10080
- 商家后台:8081 → 10082
- 平台后台:8082 → 10084
- 官网:8083 → 10086
### 测试环境端口映射
- API 服务:3001 → 10081
- 商家后台:9081 → 10083
- 平台后台:9082 → 10085
- 官网:9083 → 10087
## 新增文档
- PORT_MAPPING.md - 端口映射说明和部署步骤
## 设计说明
- 使用 10080-10087 端口段,避免常用端口冲突
- 通过宝塔反向代理访问,不需要开放这些端口到公网
- 端口规划清晰,便于管理和维护
## 配合文档
- 详细配置步骤见 BAOTA_PROXY_SETUP.md
- 域名配置见 DOMAIN_SETUP.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-10 16:37:33 +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
|
87e870d0cb
|
docs: 添加宝塔面板反向代理配置完整指南
## 新增文档
- BAOTA_PROXY_SETUP.md - 宝塔面板域名和反向代理配置指南
## 包含内容
### 配置步骤
- Docker Compose 端口映射配置(生产/测试环境)
- 宝塔面板添加站点和配置反向代理
- SSL 证书自动申请和续期
- 防火墙和安全组配置
### 端口映射规划
- 生产环境:10080-10086
- 测试环境:10081-10087
- 8个服务完整映射表
### 高级配置
- API 速率限制
- CORS 跨域配置
- WebSocket 支持
- 静态资源缓存
### 故障排查
- 域名无法访问
- 502 Bad Gateway
- SSL 证书申请失败
- 跨域错误
### 性能优化
- Gzip 压缩
- 浏览器缓存
- HTTP/2 支持
- 监控和告警
### 对比说明
- 宝塔面板 vs docker-compose.gateway.yml
- 适用场景和选择建议
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-10 16:29:28 +08:00 |
|
xiaoquan
|
72c8add85e
|
docs: 添加域名配置和 HTTPS 设置完整指南
## 新增文档
- DOMAIN_SETUP.md - 域名配置完整指南
- DNS 解析配置步骤
- Nginx 网关启动方法
- Let's Encrypt 免费 HTTPS 证书申请
- 故障排查指南
- 域名管理最佳实践
- gateway-https-example.conf - HTTPS 配置示例
- SSL 证书配置模板
- HTTP 自动跳转 HTTPS
- 适用于多域名场景
## 包含内容
- 8个域名的 DNS 配置清单
- Let's Encrypt 证书自动续期
- 跨域问题解决方案
- 端口占用和证书错误排查
- ICP 备案提醒
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-10 16:20:41 +08:00 |
|
xiaoquan
|
7e87a13fab
|
fix: 修正 Gitea Runner 标签配置并添加设置文档
## 修改内容
- 修正 act-runner 标签从 `rent-deploy:docker://node:18-alpine`
改为 `self-hosted,rent-deploy` 以匹配工作流要求
- 添加 Gitea Runner 完整配置指南文档
## 配置说明
Runner 标签必须与 .gitea/workflows/deploy.yml 中的
`runs-on: [self-hosted, rent-deploy]` 完全匹配
## 后续步骤
服务器管理员需要:
1. 在 Gitea Web 界面获取 Registration Token
2. 设置环境变量 GITEA_RUNNER_TOKEN
3. 运行 docker-compose up -d act-runner
4. 验证 Runner 状态为 Online
详细步骤参见:deploy/docker/GITEA_RUNNER_SETUP.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-10 15:49:39 +08:00 |
|
xiaoquan
|
26ebb6f1d2
|
feat: 删除假支付逻辑,全面接入微信支付
- 删除 order.service.ts 中的 pay() 假支付方法
- 修复支付模块结构,移动到正确路径
- 重构退款服务使用统一的 WechatPayService
- 完善退款回调处理(恢复库存+记录财务)
- 修复小程序支付调用,使用 wxPay() 方法
- WechatPayService 从数据库系统密钥读取配置
- 移除 .env.example 中的微信支付配置(已迁移到数据库)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-03 20:33:26 +08:00 |
|
xiaoquan
|
6b262ccd9d
|
chore: 移除 .env.example 中多余的注释
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-02 12:09:54 +08:00 |
|
xiaoquan
|
93566db63e
|
chore: 更新 .env.example,业务密钥迁移到系统密钥管理
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-02 12:09:07 +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
|
3b75e26599
|
feat: 系统密钥管理模块(数据库加密存储)
后端:
- 新增 system_secrets 表(AES-256-GCM 加密存储)
- 新增 crypto.util.ts 加解密工具
- 新增 SecretService 共享服务(CRUD + 加解密)
- 新增 AdminSecretController 管理端 API(仅超管)
- API 返回值脱敏(*** + 最后4位)
前端(平台后台):
- 新增系统密钥管理页面(按分组展示、CRUD 操作)
- 侧边栏新增「系统密钥」菜单
管理员可在后台网页管理所有密钥,不再需要 SSH 到服务器改配置
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-02 12:03:37 +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 |
|
xiaoquan
|
bcf16fe53d
|
feat: 双环境自动化部署(生产 + 测试)
- 新增 docker-compose.prod.yml / docker-compose.test.yml 双环境配置
- 新增 docker-compose.gateway.yml Nginx 网关按域名路由
- 新增 Dockerfile.website 官网镜像构建
- 新增 gateway.conf 支持 8 个域名路由
- 更新 .gitlab-ci.yml 支持 prod/test 双分支自动部署
- 更新 Makefile 新增 prod-/test-/gateway- 快捷命令
- 新增 scripts/setup-server.sh 服务器一键初始化脚本
- 修复 Nginx 配置服务名不匹配问题
- 修复前端 Dockerfile 缺少 packages/ 导致构建失败
- 删除旧的 docker-compose.yml
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-01 19:12:32 +08:00 |
|
xiaoquan
|
0bbbe20ec7
|
feat: dev
|
2026-06-01 18:22:30 +08:00 |
|
xiaoquan
|
f021b43f05
|
feat: 迭代
|
2026-06-01 09:36:52 +08:00 |
|
xiaoquan
|
e8bce5e924
|
feat: 迭代
|
2026-05-28 19:47:45 +08:00 |
|
xiaoquan
|
9baf5f29f7
|
feat: 迭代
|
2026-05-27 18:58:39 +08:00 |
|
xiaoquan
|
716a55744e
|
feat: 完善微信登录
|
2026-05-27 00:12:45 +08:00 |
|
xiaoquan
|
d1147713f8
|
feat: 迭代
|
2026-05-26 21:27:48 +08:00 |
|
xiaoquan
|
4c7a1e06a8
|
feat: 迭代
|
2026-05-22 18:54:30 +08:00 |
|
xiaoquan
|
ca22542c7a
|
feat: 迭代
|
2026-05-22 00:12:28 +08:00 |
|
xiaoquan
|
083ba3e754
|
feat: 迭代
|
2026-05-21 19:01:49 +08:00 |
|
xiaoquan
|
606895fdd5
|
feat: 迭代
|
2026-05-19 16:23:01 +08:00 |
|
xiaoquan
|
848df4c873
|
feat: 迭代
|
2026-05-15 19:06:32 +08:00 |
|
xiaoquan
|
8c908ea557
|
feat: 迭代
|
2026-05-15 11:28:02 +08:00 |
|
xiaoquan
|
6a7ec5fca7
|
feat: 迭代
|
2026-05-14 19:12:26 +08:00 |
|
xiaoquan
|
da1e8b3c7d
|
Merge branch 'master' of https://gitee.com/mxquan/rent
|
2026-05-14 09:55:31 +08:00 |
|
xiaoquan
|
c647f3c8cd
|
feat: 迭代
|
2026-05-14 09:55:25 +08:00 |
|
xiaoquan
|
177491d138
|
feat: dev
|
2026-05-14 00:17:52 +08:00 |
|
xiaoquan
|
6eed65baf2
|
feat: 迭代
|
2026-05-13 17:59:30 +08:00 |
|
xiaoquan
|
e471b75f59
|
feat: 迭代
|
2026-05-13 17:49:33 +08:00 |
|
xiaoquan
|
554bb702a2
|
feat: 迭代
|
2026-05-11 17:59:19 +08:00 |
|
xiaoquan
|
2d5598dcad
|
feat: 迭代
|
2026-05-11 12:00:18 +08:00 |
|
xiaoquan
|
fc47868bdc
|
feat: 迭代
|
2026-05-11 11:24:49 +08:00 |
|
xiaoquan
|
0f71cd9be7
|
feat: 迭代
|
2026-05-11 10:22:31 +08:00 |
|
xiaoquan
|
16bae845c9
|
dev
|
2026-05-11 00:37:21 +08:00 |
|