Git 部署
连接任何 Git 仓库,每次推送时自动部署。sh0 处理克隆、构建和部署应用,无需任何配置。
连接仓库
要从 Git 部署,导航到 sh0 控制台中的堆栈并选择 新建应用 → Git 仓库。你可以通过输入仓库 URL 或链接你的 Git 提供商账户来连接仓库以访问私有仓库。
对于公共仓库,直接粘贴 HTTPS 克隆 URL。对于私有仓库,你需要连接 Git 提供商账户或在 设置 → SSH 密钥 下添加 SSH 密钥。
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 访问的仓库
Webhook 配置
Webhooks 实现推送即部署。当你将代码推送到仓库时,Git 提供商会向 sh0 发送通知,触发新的构建和部署。
如果你通过 OAuth 连接了 Git 提供商,webhooks 会自动配置。对于手动设置,请在仓库设置中添加 webhook,使用以下 URL:
https://your-sh0-server.com:9000/api/hooks/git/{app_id}将 webhook 配置为在 push 事件时触发。sh0 为每个应用生成 webhook 密钥,可在 应用设置 → Git → Webhook 密钥 中找到。将此密钥添加到你的 Git 提供商以验证传入的负载。
分支选择
默认情况下,sh0 从 main 分支部署。你可以在应用设置中更改部署分支,从仓库中的任何分支部署。
常见配置包括:
- 从
main或production部署的生产环境 - 从
develop或staging部署的预发布环境 - 功能分支:使用预览环境实现自动 PR 部署
构建设置
sh0 自动检测你的应用技术栈并相应配置构建流水线。你也可以手动覆盖这些设置。
Dockerfile 自动检测
如果你的仓库包含 Dockerfile,sh0 会自动使用它。你也可以指定自定义的 Dockerfile 路径和构建上下文:
dockerfile: ./deploy/Dockerfile
context: .
build_args:
NODE_ENV: production
API_URL: https://api.example.comsh0 支持多阶段构建、构建参数和自定义构建上下文。构建在你的服务器上运行,因此大型镜像不会产生传输费用。
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
推送即部署
配置好 webhooks 后,每次推送到部署分支都会自动触发新部署。工作流程如下:
- 你将代码推送到配置的分支
- 你的 Git 提供商向 sh0 发送 webhook
- sh0 从仓库拉取最新代码
- 从 Dockerfile(或自动生成的 Dockerfile)构建 Docker 镜像
- 使用蓝绿部署部署新容器
- 健康检查通过后流量切换到新容器
你也可以禁用自动部署,通过控制台或 API 手动触发:
curl -X POST https://your-sh0-server.com:9000/api/apps/{app_id}/deploy \
-H "Authorization: Bearer YOUR_TOKEN"查看构建日志
每次部署都会生成完整的构建日志,你可以从控制台实时查看。构建日志包括:
- Git 克隆和检出输出
- Docker 镜像构建步骤(每个层)
- 容器启动和健康检查结果
- 流量切换确认
构建日志为每次部署存储,可随时从 部署 选项卡访问。如果构建失败,sh0 会保持之前的版本运行,并将部署标记为失败并附带详细错误信息。