Appaloft Docsv878ea0ca9d2b5227200e9c2fa399a24afef99f67
Deploy

Deployment lifecycle

从 detect、plan、execute、verify 到 rollback 理解一次部署。

Appaloft 把部署建模为 detect -> plan -> execute -> verify -> rollback

这个生命周期用于解释用户看到的部署状态。它不是内部实现细节:用户需要知道当前卡在哪一步、这一步读取什么输入、失败后该怎么恢复。

Deployment lifecycle

Detect 读取 source 和配置线索,判断应用类型、构建方式、运行入口和网络暴露需求。

常见失败:

  • source 不可读取。
  • 仓库 ref 或 base directory 不存在。
  • 应用类型无法判断,且用户没有提供 runtime profile。

Plan 把 source、runtime、health、network 配置转成可执行计划。计划需要解释 Appaloft 准备运行什么,而不是只显示一段 shell 命令。

计划中用户应该能看到构建、启动、健康检查和访问路由的摘要。

计划预览只运行 detect -> plan,不会创建 deployment attempt,不会写入部署事件,也不会执行 build、run、verify 或 proxy 修改。

预览会显示检测到的 framework/runtime 证据、选中的 planner、support tier、artifact 类型、install/build/start/package 命令、内部端口、健康检查、访问路由摘要、warning 和 unsupported reasons。被阻止的预览会包含 phase、reason code、安全证据、fix path、override path,以及能定位时的 affected resource profile field。用户可以据此先修 resource source/runtime/network/health/access profile,再运行真正的部署。

显式 planner/profile 选择优先于推断。自定义 install/build/start 命令、Dockerfile、Compose、prebuilt image、source base directory、internal port 和显式 health policy 都可以在运行 deployments.create 前修复 unsupported、ambiguous 或 missing evidence。静态部署使用 Appaloft static server 的 internal port 80;SSR 或 HTTP 服务需要在 resource network profile 中配置 internal port。

如果应用还没有一等 framework planner,但 adapter 能识别 buildpack-style 证据,预览会把它标成 buildpack accelerator,而不是把它当成新的部署命令。用户会看到 platform files、language/framework hints、detected buildpacks、builder policy、限制和修复路径。显式 planner、Dockerfile/Compose/prebuilt image、static 策略和自定义 runtime commands 仍然优先;buildpack 不会把 source/runtime/network 字段塞进 deployments.create

在目标服务器或执行环境中构建、上传、启动和路由应用。

执行阶段失败通常和网络、凭据、镜像拉取、构建命令、服务器资源或 runtime 后端有关。用户应先查看运行时日志和诊断摘要,而不是立即修改域名。

检查进程、健康策略、代理路由和访问地址。

Verify 失败不一定表示应用没有启动。它可能是健康检查路径、监听端口、代理路由或访问 URL 观测失败。

如果原始 deploy 命令已经断开,但仍需要结构化 replay 或 live event stream,可以使用 appaloft deployments events <deploymentId> --follow --json。这个 stream 可能返回 event、heartbeat、gap、closed 或 error envelope;gap 表示观测连续性不完整,应重新打开观测或查看 deployment detail 后再决定恢复动作。

失败后的恢复路径。Rollback 不能把失败隐藏成成功,用户需要知道当前状态能否重试。

用户应优先看最近失败阶段:

  • detect 失败:修 source 或配置。
  • plan 失败:修资源 profile。
  • execute 失败:看服务器、凭据、构建和运行时日志。
  • verify 失败:看 health、network、proxy 和 access route。
  • rollback 失败:需要人工介入,先保存诊断摘要。

相关页面:Deployment sourcesLogs and healthSafe recovery

部署状态响应示例:

GET /api/deployments/dep_123
{
  "id": "dep_123",
  "resourceId": "res_web",
  "status": "verifying",
  "currentPhase": "verify",
  "sourceSummary": {
    "kind": "git-repository",
    "gitRef": "main",
    "baseDirectory": "."
  },
  "recoveryHint": "Inspect health summary before retrying."
}