Pro 和 Business 功能

每个 PR 都有自己的环境

推送分支,打开 PR,获得在线 URL。sh0 自动构建、部署和销毁预览环境。无需脚本,无暂存瓶颈。

您获得什么

自动部署、完全隔离、完成后自动清理的预览环境。

PR 自动部署
每个拉取请求自动触发全新的隔离部署
唯一子域名
每个 PR 获得独立子域名,如 pr-123.yourapp.sh0.app
TTL 自动清理
环境在合并或 TTL 到期后自动销毁
应用级开关
按应用启用或禁用预览环境
分支隔离
每个分支在独立容器中运行,零干扰
共享数据库选项
可选择在预览环境间共享暂存数据库

工作原理

01

为应用启用预览环境

在应用设置中开启开关。选择 TTL 时长、数据库策略和资源限制。

02

推送 PR 分支

在 GitHub、GitLab 或 Gitea 上打开拉取请求。sh0 接收 webhook 并开始构建。

03

sh0 自动部署到 pr-123.yourapp.sh0.app

分支使用生产流水线构建并部署到带唯一子域名的隔离容器。

04

TTL 到期,环境自动销毁

当 PR 合并或关闭 -- 或 TTL 到期 -- sh0 销毁容器并释放所有资源。

预览流水线

Git Push
Webhook
构建
部署到隔离容器
分配子域名
TTL 计时器
自动清理

从 git push 到在线 URL 不到 2 分钟 -- 全自动,零配置

一应俱全

自动 PR 检测

sh0 监听 GitHub、GitLab 和 Gitea webhook。新 PR 打开?构建立即开始,无需手动操作。

每个分支的唯一子域名

每个预览获得类似 pr-42.myapp.sh0.app 的 URL。分享给审查者、QA 或客户以获取即时反馈。

可配置 TTL

设置 1 小时、24 小时、7 天或自定义的存活时间。到期后环境自动清理。

零手动清理

合并了 PR?sh0 检测到关闭事件并销毁环境。没有孤立容器,没有资源浪费。

与生产相同的构建流水线

预览环境使用与生产部署完全相同的 Dockerfile、构建步骤和运行时。合并时不会有意外。

在 PR 上评论 URL

sh0 在拉取请求上发表评论,包含实时预览 URL。审查者点击一次即可看到运行中的应用。

传统方式

  • x 手动部署暂存环境
  • x 整个团队共享一个暂存环境
  • x 暂存环境上的 PR 冲突
  • x 手动清理旧环境
  • x 没有按分支的隔离测试
  • x 祈祷暂存环境与生产一致

sh0 的方式

  • 每个 PR 自动部署
  • 每个分支独立环境
  • 唯一子域名自动分配
  • 合并或 TTL 到期后自动清理
  • 与生产相同的构建流程
  • 链接自动发布到 PR

常见问题

预览 URL 是如何生成的? +
sh0 使用 PR 编号和应用名称创建子域名:pr-undefined.undefined.sh0.app。对于自定义域名,可以配置通配符如 *.preview.yourdomain.com。
PR 合并后会怎样? +
sh0 接收合并/关闭 webhook,停止预览容器,移除子域名路由,释放所有资源。全自动,零手动步骤。
可以设置 TTL 吗? +
可以。您可以为每个应用配置 TTL(如 24 小时、7 天)。如果 PR 超过 TTL 仍然打开,环境会被销毁以节省资源。重新打开 PR 或推送新提交会重新创建。
预览环境共享数据库吗? +
默认情况下,每个预览获得独立的隔离环境,没有数据库。如果应用需要持久化数据进行测试,可以选择将预览连接到共享的暂存数据库。
可以为特定应用禁用预览环境吗? +
可以。预览环境通过应用设置中的开关按应用启用。未启用的应用不受 PR webhook 影响。
构建流水线与生产环境相同吗? +
完全相同。sh0 使用相同的技术栈检测、Dockerfile 生成、构建步骤和运行时配置。唯一的区别是子域名和 TTL 生命周期。

在生产条件下审查代码

每个 PR 都获得独立的隔离环境和唯一 URL。自信地合并。