预览环境是什么
评审预览环境(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 自动清理 |
|---|---|
| GitHub | environment 按 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_stop | MR 关闭时自动触发停止作业 |
| action: stop | 停止作业的固定写法,标记环境已停 |
| auto_stop_in | 闲置超时后自动停止,兜底清理 |
预览环境数据库与生产隔离并定期重放样本数据,避免真实数据外泄;这是评审可用与合规的底线。
预览环境一般会获得公网可达的域名:加基础认证或限制来源,否则未发布的界面与接口等于对外公开。