Orbit

部署您的项目

Once a repository is connected, Orbit deploys on every push to your production branch: it clones the commit, installs dependencies, runs your build, packages the output and starts serving it. This…

一旦连接了存储库,Orbit 在每次推送到生产分支时进行部署:它克隆提交、安装依赖项、运行构建、打包输出并开始提供服务。本指南涵盖完整的部署周期、如何手动触发部署,以及控制何时允许部署上线的设置。

自动部署如何工作

每次推送到在"设置"中"Git"下设置为"生产分支"的分支都会触发部署。Orbit 随后会:

  1. 从 GitHub、GitLab 或 Bitbucket 接收推送事件。
  2. 将部署加入队列并为其分配一个构建槽。
  3. 在该确切提交处克隆您的存储库。
  4. 如果您的计划上提供了构建缓存,则恢复缓存的 node_modules
  5. 运行您的安装命令(npm ciyarn installpnpm install,从您的锁定文件检测)。
  6. 运行您的构建命令。
  7. 将输出目录打包到部署制品中并上传。
  8. 切换环境以提供新制品。

部署详情页面将这些显示为命名的"构建阶段":Clone、Cache restore、Install、Cache save、Build、Upload、Done。大多数项目在一到三分钟内完成。

Orbit 项目概览显示最新构建

部署状态

状态含义
Queued等待构建槽。部署页面显示您在队列中的位置
Awaiting approval由于"需要生产环境批准"已打开而被保留。某人必须批准它
Building正在安装依赖项并运行构建命令
Deploying构建完成,新制品正在投入流量
Succeeded (显示为 Live)提供流量。部署带有"CURRENT"徽章
Failed构建或部署步骤出错。打开日志查看出错位置
Cancelled在完成前停止,由您或同一分支的新推送停止
Rolled back被回滚到更早版本所取代

观察进行中的构建

项目"概览"在"最新构建"面板中显示当前构建和实时流日志。点击"完整详情"打开部署详情页面,该页面添加了构建进度条、估计剩余时间、队列位置和按阶段划分的构建时间线。

如果您的计划允许多个并发构建且它们都很繁忙,该页面会明确告诉您:它显示您有多少个并发构建槽正在使用,并在其中一个释放时自动启动您的部署。您可以在"Orbit"中查看所有项目中的每个构建,然后是"Queue"。

手动触发部署

有四种方法可以在不推送新提交的情况下部署。

重新部署最新提交

  1. 打开项目。
  2. 打开"部署"选项卡。
  3. 点击您想要的部署以打开其详情页面。
  4. 点击"重试构建"。如果您怀疑缓存的依赖项陈旧,请使用"更多重试选项",然后"使用已清除缓存重试"。

立即部署

"部署"选项卡上的"立即部署"按钮将您的生产分支当前 head 的新构建加入队列。

计划部署

部署可以计划在将来的时间进行。Orbit 在您计划部署时对提交进行快照,因此稍后运行的构建是您批准的代码,而不是同时落地的任何代码。

部署钩子

部署钩子是一个密钥 URL,当某个东西向它发送 POST 请求时,它会将构建加入队列。使用它们从无头 CMS、cron 作业或 CI 管道重建。在项目的"Hooks"选项卡上进行设置。请参阅通过部署钩子触发部署

构建设置

Orbit 为大多数项目检测合理的默认值。在"设置"中"构建设置"中覆盖其中任何一个:

字段留空时的占位符示例
Install commandnpm ci (auto-detected)npm ciyarn install --frozen-lockfilepnpm install
Build commandnpm run build (auto-detected)npm run buildnext buildvite buildastro build
Output directorydist (auto-detected)dist.nextoutbuild.output
Root directory/ (monorepo subdirectory)apps/web
Node.js version平台默认值182022

将字段留空以保持自动检测的值。完整的详情(包括各个框架的值和导致首次部署失败的错误)在配置您的构建命令和输出目录中。

设置"根目录"不仅仅改变工作目录。仅改变该路径外文件的推送会自动跳过,因此单仓库不会在每个提交上重建每个应用。

决定何时允许部署

Orbit 有多个独立的门。它们都在"设置"中。

部署锁定

使用锁定在事故、维护窗口或代码冻结期间冻结生产。

  1. 打开项目。
  2. 点击"锁定部署"。
  3. 添加可选的原因。

锁定时,推送触发的部署会被静默跳过,横幅显示"生产部署已锁定"及您的原因。手动部署仍然有效,这是故意的:锁定阻止意外部署,而不是您尝试发送的修复。点击"解除部署锁定"以解除它。

需要生产环境批准

在"部署保护"下打开"需要生产环境批准"。推送触发的生产部署随后会暂停在"等待批准",直到某人打开部署并点击"批准"或"拒绝"。面板部署和部署钩子不受影响。

需要暂存成功优先

"需要暂存成功在生产之前"会保留推送触发的生产部署,直到暂存环境已成功部署同一提交。某人仍然可以手动批准以跳过等待。

CI 必需的检查

在"CI 必需的检查"下在您自己的 CI 上进行部署。在 GitHub 上,输入逗号分隔的 Actions 作业名称,所有作业都必须通过。在 GitLab 上,任何非空值都会等待整个管道。CI 失败会自动取消 Orbit 部署。

部署冻结计划

"部署冻结计划"在批准的窗口外阻止推送触发的部署:周末阻止、允许的小时范围或两者兼有。所有时间都是 UTC。手动部署和部署钩子不受影响。

除了部署冻结之外的上述每个门都只阻止推送触发的部署。部署钩子和手动面板部署直接通过。如果钩子 URL 泄露,这些设置都不会阻止它将构建加入队列。像对待凭证一样对待钩子 URL。

跳过您不需要的构建

  • 忽略的路径:逗号分隔的 glob 模式。如果推送中的每个文件都匹配,则构建被跳过。*.md,docs/** 会停止文档提交触发部署。
  • 分支忽略模式:来自匹配分支的推送完全被跳过。dependabot/*,renovate/* 是常见情况。
  • Git 标签部署:在推送匹配标签时使用 glob(如 v*)部署到生产。

构建缓存

Orbit 在 Liftoff 和 Apex 计划上在构建之间缓存 node_modules。当使用缓存的安装时,部署显示"缓存命中"徽章,安装阶段显著更短。冷构建改为显示"冷构建"。

要强制完全重新安装,打开"设置",然后"清除构建缓存",并确认。每个环境的下一个部署从头开始运行完整安装。

如果构建以您无法解释的方式失败,且代码在本地很好,在开始更改任何内容之前使用已清除的缓存重试它。陈旧的缓存依赖树是一个常见且非常令人困惑的原因。

当部署出现问题时

Orbit 可以为您捕捉糟糕的部署,而不是让它保持实时:

  • 故障时自动回滚在生产部署失败时自动恢复上一个健康的部署。
  • 健康检查在每个生产部署后获取您选择的路径。15 秒内的非 2xx 响应会恢复上一个健康的部署。
  • 烟雾测试在每个成功部署后针对多达 10 个路径运行 GET 请求,并记录通过或失败。结合自动回滚,失败的烟雾测试会回滚部署。

要自己撤消部署,请参阅回滚部署。要弄清楚构建为什么失败,请参阅故障排除失败的构建

仍需帮助?

请发送邮件至 support@kapsulehost.com 或在 KPanel 中打开聊天。

打开 KPanel