首页/开发/CI/CD 与发布速查/评审预览环境(Review App)
流水线设计54 条

评审预览环境(Review App)

为每个合并请求部署临时全栈预览:评审人点开链接即可验证 UI 与接口,发布前发现集成问题。

CI/CD 与发布速查开发更新于 2026-10-13

预览环境是什么

评审预览环境(Review App)是为每个合并请求(MR/PR)自动部署的临时全栈环境:MR 创建时部署,评审人点开链接即可操作真实界面与接口,关闭时销毁。与预发环境的关键区别是「按需多份」:预发通常只有一套,谁先占谁用;预览环境每个分支一套,互不干扰。GitLab 用动态 environment 命名(如 review/$CI_COMMIT_REF_SLUG)实现,配合 on_stop 指向停止作业;GitHub 侧通常用 environment 按 PR 命名加外部部署系统,或直接使用托管平台的 Preview 功能。

基本信息

GitLab动态 environment(review/$CI_COMMIT_REF_SLUG)+ on_stop 自动清理
GitHubenvironment 按 PR 命名 + 外部部署系统;或托管平台 Preview 功能
生命周期MR 关闭时销毁资源,避免临时环境堆积
数据预览数据库与生产隔离,定期重放样本数据
兜底auto_stop_in 可设闲置时长自动停止

典型使用场景

  • 前端改动评审:产品与设计不用本地起环境,直接点链接看真实页面与交互。
  • 后端接口联调:移动端或第三方在预览环境对接未合并的接口变更,提前暴露问题。
  • 多团队并行开发:避免互抢同一套测试环境,每个 MR 独立环境、独立数据。
  • 演示与验收:向干系人展示阶段性成果,链接随 MR 生命周期管理。
  • 端到端验证:在预览环境跑冒烟与 E2E 用例,比本地环境更接近真实部署。

GitLab 预览与清理

GitLab 预览与清理
review:
  stage: deploy
  environment:
    name: review/$CI_COMMIT_REF_SLUG
    on_stop: stop-review
    auto_stop_in: 3 days
  script: ./ci/deploy-review.sh

stop-review:
  stage: deploy
  when: manual
  environment:
    name: review/$CI_COMMIT_REF_SLUG
    action: stop
  script: ./ci/destroy-review.sh

关键机制读法

机制作用
environment 动态命名每个分支/PR 一套环境记录与链接
on_stopMR 关闭时自动触发停止作业
action: stop停止作业的固定写法,标记环境已停
auto_stop_in闲置超时后自动停止,兜底清理
预览环境数据库与生产隔离并定期重放样本数据,避免真实数据外泄;这是评审可用与合规的底线。
预览环境一般会获得公网可达的域名:加基础认证或限制来源,否则未发布的界面与接口等于对外公开。

易错点

  • 预览环境不自动销毁:资源与域名记录越积越多直至配额告急,on_stop 加 auto_stop_in 双保险。
  • 预览环境连生产数据库:评审动作直接污染真实数据,必须物理隔离并定期重放样本。
  • 每个 MR 都铺全量依赖:数据库、缓存、消息队列全量启动成本失控,用轻量替身或共享实例加分库。
  • 停止作业设为 manual 且无人执行:环境残留成为常态,把它交给 on_stop 或自动停止策略。
  • 预览域名无访问控制:临时环境被外部扫描或被搜索引擎收录,加上认证与禁止索引。

数据来源与参考

  • GitLab Docs《Review apps》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌