[CI优化] P1-4 预览环境(PR Environments) #446

Closed
opened 2026-07-17 11:49:42 +08:00 by xiaoxia · 2 comments
Owner

背景

代码review只能看代码,无法直观体验效果,需要每个PR部署独立预览环境。

要做什么

  • 每个PR自动部署一个独立的预览环境
  • PR合并/关闭后自动清理预览环境
  • 预览环境地址自动评论到PR

前提

  • staging部署改造已完成

验收标准

  • 新建PR后自动部署预览环境
  • PR页面能看到预览环境地址
  • PR关闭/合并后环境自动回收
  • 多PR并行部署不冲突
## 背景 代码review只能看代码,无法直观体验效果,需要每个PR部署独立预览环境。 ## 要做什么 - 每个PR自动部署一个独立的预览环境 - PR合并/关闭后自动清理预览环境 - 预览环境地址自动评论到PR ## 前提 - staging部署改造已完成 ✅ ## 验收标准 - [ ] 新建PR后自动部署预览环境 - [ ] PR页面能看到预览环境地址 - [ ] PR关闭/合并后环境自动回收 - [ ] 多PR并行部署不冲突
xiaoxia added this to the [CI] Phase 3:质量提升 milestone 2026-07-17 11:49:42 +08:00
xiaoxia added the devopsP1ci-optimization labels 2026-07-17 11:49:42 +08:00
Author
Owner

进展更新(2026-07-17)

代码部分已合并(PR #482)

  • .gitea/workflows/preview-deploy.yml - PR预览部署工作流
  • .gitea/workflows/preview-cleanup.yml - PR关闭后清理工作流
  • scripts/ci/preview_init_server.sh - 服务器初始化脚本
  • scripts/ci/preview_nginx.conf.template - Nginx配置模板

待完成(服务器端一次性配置):

  • DNS解析:*.preview.xiaoxiajianji.com 指向业务服务器
  • Nginx加载预览环境配置
  • 服务器目录初始化
  • 端到端验证:新建PR → 自动部署 → 可访问 → 关闭PR → 自动清理

采用轻量方案:静态文件 + Nginx托管 + rsync部署,不建独立后端。

## 进展更新(2026-07-17) ✅ 代码部分已合并(PR #482) - `.gitea/workflows/preview-deploy.yml` - PR预览部署工作流 - `.gitea/workflows/preview-cleanup.yml` - PR关闭后清理工作流 - `scripts/ci/preview_init_server.sh` - 服务器初始化脚本 - `scripts/ci/preview_nginx.conf.template` - Nginx配置模板 ⏳ 待完成(服务器端一次性配置): - [ ] DNS解析:`*.preview.xiaoxiajianji.com` 指向业务服务器 - [ ] Nginx加载预览环境配置 - [ ] 服务器目录初始化 - [ ] 端到端验证:新建PR → 自动部署 → 可访问 → 关闭PR → 自动清理 采用轻量方案:静态文件 + Nginx托管 + rsync部署,不建独立后端。
Author
Owner

预览环境全链路验证通过

验证过程

通过测试 PR #516 完整验证了从部署到清理的全链路:

环节 状态 说明
PR 创建 → Preview Deploy 成功 自动触发,前端构建 + rsync 部署
部署评论发布 成功 自动发布带预览链接的评论
PR 合并 → Cleanup 触发 成功 closed 事件正常触发 cleanup workflow
SSH 连接服务器 成功 PREVIEW_SSH_KEY secret 正常工作
目录清理 成功 脚本执行完成
清理评论发布 成功 自动发布清理完成评论

已修复的问题

  • #504: 修复 PR 号提取和 SSH 安装问题
  • #507: 修复 cleanup workflow 缺少 checkout 步骤导致评论脚本找不到
  • #515: 调整 SSH key 优先级,优先使用 PREVIEW_SSH_KEY secret

已知 flaky 问题(不阻塞核心功能)

  • runtime-builder-01 这个 runner SSH 连不上 preview 服务器(Permission denied)
  • 分到 xiaoxia-ci-runner-new-4 / new-7 等 runner 都正常
  • 建议运维检查 runtime-builder-01 的 SSH 配置

结论

预览环境核心功能(自动部署 + 自动清理 + 评论通知)已验证通过,可以投入使用。

## ✅ 预览环境全链路验证通过 ### 验证过程 通过测试 PR #516 完整验证了从部署到清理的全链路: | 环节 | 状态 | 说明 | |------|------|------| | PR 创建 → Preview Deploy | ✅ 成功 | 自动触发,前端构建 + rsync 部署 | | 部署评论发布 | ✅ 成功 | 自动发布带预览链接的评论 | | PR 合并 → Cleanup 触发 | ✅ 成功 | closed 事件正常触发 cleanup workflow | | SSH 连接服务器 | ✅ 成功 | PREVIEW_SSH_KEY secret 正常工作 | | 目录清理 | ✅ 成功 | 脚本执行完成 | | 清理评论发布 | ✅ 成功 | 自动发布清理完成评论 | ### 已修复的问题 - #504: 修复 PR 号提取和 SSH 安装问题 - #507: 修复 cleanup workflow 缺少 checkout 步骤导致评论脚本找不到 - #515: 调整 SSH key 优先级,优先使用 PREVIEW_SSH_KEY secret ### 已知 flaky 问题(不阻塞核心功能) - `runtime-builder-01` 这个 runner SSH 连不上 preview 服务器(Permission denied) - 分到 `xiaoxia-ci-runner-new-4` / `new-7` 等 runner 都正常 - 建议运维检查 runtime-builder-01 的 SSH 配置 ### 结论 预览环境核心功能(自动部署 + 自动清理 + 评论通知)已验证通过,可以投入使用。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: xiaoxia/xiaoxia-saas#446