开始使用

one deploy

按项目派发到 kustomize、S3-compatible、Vercel、Cloudflare 或 EdgeOne 部署后端。

约 6 分钟3 天前更新在 GitHub 编辑

one deploy 是 per-project 部署入口。它读取每个项目的 projects[].domains.deploy.kind,再派发给对应后端:后端 / SSR 常见是 kustomize,静态前端常见是 S3-compatible 对象存储,也可以使用 Vercel、Cloudflare、EdgeOne。

用法

one deploy [-p <name|path>] [--profile <name>] [--env <env>] [--env-provider dotenv|infisical] [--build-version <version>] [--dry-run]

参数

参数说明
`-p, --project <namepath>`
--profile <name>本次部署临时使用指定 deploy profile
--env <env>覆盖部署目标环境,同时作为环境变量注入环境
`--env-provider dotenvinfisical`
--build-version <version>非交互 / CI 用镜像版本;主要用于 kustomize 自动构建
--dry-run打印 docker / kubectl / 对象存储 / 平台 CLI 计划,不触碰远端

交互模式

one deploy 不是完整向导,但 TTY 下有少量补全式询问:

  • kustomize 部署需要镜像版本且没有传 --build-version 时,会沿用 one container build 的版本选择逻辑。
  • Cloudflare 部署缺少可用 profile,且你没有显式传 --profile 时,可能会询问 API token / account ID 并保存一个默认 profile。

脚本、CI、agent 应显式传 --profile--env--build-version,并先用 --dry-run 确认计划。

后端

backend适合项目行为
kustomizeAPI、SSR、需要容器的服务自动 build / push 镜像,同步 overlay,然后 kubectl apply -k
aws-s3 / aliyun-oss / tencent-cos / minio / rustfs / r2静态站构建产物,确保 bucket,走 S3-compatible 协议上传
vercel前端托管调 Vercel CLI/API 部署
cloudflareCloudflare Workerswrangler deploy
edgeoneEdgeOne Pagesedgeone pages deploy

环境映射

backendprod 或空其他环境
kustomizekustomize/overlays/prodkustomize/overlays/<env>
vercelproduction deploypreview deploy
cloudflarewrangler deploywrangler deploy --env=<env>
edgeoneproduction deploypreview deploy
S3-compatibledeploy 目标不变deploy 目标不变;只影响构建时注入的 env

--env 必须存在于 one.manifest.json#environments.names

profile 解析

每个 deploy target 独立解析 profile:

  1. --profile <name>
  2. ~/.config/one/config.json#workspaces[workspaceId].projects[project].profiles[deploy/backend]
  3. ~/.config/one/config.json#workspaces[workspaceId].profiles[deploy/backend]
  4. ~/.config/one/config.json#deploy/<backend>.default

manifest 不再保存本机 profile 名。用 one configure use <pair> --profile <name> --workspace 绑定当前工作区;需要只绑定某个项目时加 --project <name|path>

示例

one deploy --dry-run
one deploy -p web --env staging --dry-run
one deploy -p api --profile prod-k8s --build-version v0.1.0

输出 schema

deploy 输出 schema 按 provider 分开:

backendschema
kustomizeone-cli/deploy-apply/v1
S3-compatibleone-cli/deploy-apply/v1
vercelone-cli/deploy-apply-vercel/v1
cloudflareone-cli/deploy-apply-cloudflare/v1
edgeoneone-cli/deploy-apply-edgeone/v1

dry-run 会优先打印将执行的命令行,适合 CI 或上线前确认。

错误恢复

错误码处理
BACKEND_NOT_ENABLED目标项目没有 deploy backend;换模板或补 projects[].domains.deploy
PROFILE_NOT_FOUNDone configure list deploy/<backend> 看本机已有 profile
PROFILE_NONE_CONFIGUREDone configure add deploy/<backend> <name> --use
ENV_UNKNOWN_ENVIRONMENT把环境名加入 manifest.environments.names,或换成已有环境
REGISTRY_CREDENTIAL_MISSINGkustomize 自动构建前先配置 container/docker profile

完整码表:错误码大全

进一步阅读