文档/ 部署/ Git 部署

Git 部署

连接任何 Git 仓库,每次推送时自动部署。sh0 处理克隆、构建和部署应用,无需任何配置。

连接仓库

要从 Git 部署,导航到 sh0 控制台中的堆栈并选择 新建应用 → Git 仓库。你可以通过输入仓库 URL 或链接你的 Git 提供商账户来连接仓库以访问私有仓库。

New app creation dialog showing the Git Repository option

对于公共仓库,直接粘贴 HTTPS 克隆 URL。对于私有仓库,你需要连接 Git 提供商账户或在 设置 → SSH 密钥 下添加 SSH 密钥。

Repository URL
https://github.com/your-org/your-app.git

支持的提供商

sh0 支持任何支持 webhooks 和 SSH/HTTPS 克隆的 Git 提供商:

  • GitHub -- OAuth 集成实现一键仓库链接
  • GitLab -- 支持自托管和 GitLab.com
  • Bitbucket -- Cloud 和 Server 版本
  • Gitea / Forgejo -- 自托管 Git 平台
  • 任何 Git 服务器 -- 任何可通过 SSH 或 HTTPS 访问的仓库
Git provider selection screen with GitHub, GitLab, and Bitbucket options
Tip
通过 OAuth 连接你的 GitHub 账户可以让 sh0 列出你的仓库、自动设置 webhooks,并将构建状态报告回你的 Pull Request。

Webhook 配置

Webhooks 实现推送即部署。当你将代码推送到仓库时,Git 提供商会向 sh0 发送通知,触发新的构建和部署。

如果你通过 OAuth 连接了 Git 提供商,webhooks 会自动配置。对于手动设置,请在仓库设置中添加 webhook,使用以下 URL:

Webhook URL
https://your-sh0-server.com:9000/api/hooks/git/{app_id}

将 webhook 配置为在 push 事件时触发。sh0 为每个应用生成 webhook 密钥,可在 应用设置 → Git → Webhook 密钥 中找到。将此密钥添加到你的 Git 提供商以验证传入的负载。

Webhook configuration panel showing the webhook URL and secret
Note
sh0 使用 HMAC-SHA256 验证 webhook 签名。这确保只有来自你仓库的真实推送才能触发部署。

分支选择

默认情况下,sh0 从 main 分支部署。你可以在应用设置中更改部署分支,从仓库中的任何分支部署。

Branch selection dropdown in app Git settings

常见配置包括:

  • 从 main 或 production 部署的生产环境
  • 从 develop 或 staging 部署的预发布环境
  • 功能分支:使用预览环境实现自动 PR 部署

构建设置

sh0 自动检测你的应用技术栈并相应配置构建流水线。你也可以手动覆盖这些设置。

Dockerfile 自动检测

如果你的仓库包含 Dockerfile,sh0 会自动使用它。你也可以指定自定义的 Dockerfile 路径和构建上下文:

Build configuration
dockerfile: ./deploy/Dockerfile
context: .
build_args:
  NODE_ENV: production
  API_URL: https://api.example.com

sh0 支持多阶段构建、构建参数和自定义构建上下文。构建在你的服务器上运行,因此大型镜像不会产生传输费用。

Buildpacks

如果你的仓库不包含 Dockerfile,sh0 会分析你的代码并自动生成优化的 Dockerfile。它可检测超过 15 种框架和语言:

  • Node.js:Next.js、Nuxt、SvelteKit、Remix、Express、Fastify
  • Python:Django、Flask、FastAPI
  • Go:标准 Go 模块
  • Rust:基于 Cargo 的项目
  • PHP:Laravel、Symfony
  • Ruby:Rails、Sinatra
  • 静态站点:HTML、Astro、Hugo、Jekyll
Auto-detected build settings showing Node.js with Next.js framework
Tip
你可以随时覆盖自动检测的设置。导航到 应用设置 → 构建 以自定义 Dockerfile、构建命令或安装命令。

推送即部署

配置好 webhooks 后,每次推送到部署分支都会自动触发新部署。工作流程如下:

  1. 你将代码推送到配置的分支
  2. 你的 Git 提供商向 sh0 发送 webhook
  3. sh0 从仓库拉取最新代码
  4. 从 Dockerfile(或自动生成的 Dockerfile)构建 Docker 镜像
  5. 使用蓝绿部署部署新容器
  6. 健康检查通过后流量切换到新容器

你也可以禁用自动部署,通过控制台或 API 手动触发:

Trigger deploy via API
curl -X POST https://your-sh0-server.com:9000/api/apps/{app_id}/deploy \
  -H "Authorization: Bearer YOUR_TOKEN"

查看构建日志

每次部署都会生成完整的构建日志,你可以从控制台实时查看。构建日志包括:

  • Git 克隆和检出输出
  • Docker 镜像构建步骤(每个层)
  • 容器启动和健康检查结果
  • 流量切换确认
Real-time build log streaming in the sh0 dashboard

构建日志为每次部署存储,可随时从 部署 选项卡访问。如果构建失败,sh0 会保持之前的版本运行,并将部署标记为失败并附带详细错误信息。

Warning
如果构建反复失败,请检查 构建日志 中是否有缺失的依赖项或错误的构建命令。你也可以使用终端访问通过 SSH 进入调试容器进行故障排查。