Get started

one deploy

Dispatch projects to kustomize, S3-compatible storage, Vercel, Cloudflare, or EdgeOne deploy backends.

6 min readUpdated 3 days agoEdit on GitHub

one deploy is the per-project deploy entry point. It reads projects[].domains.deploy.kind and dispatches each project to the matching backend.

Usage

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

Options

optionpurpose
-p, `--project <namepath>`
--profile <name>one-shot deploy profile override
--env <env>override both deploy target environment and env-var environment
`--env-provider dotenvinfisical`
--build-version <version>CI/non-interactive image version, mainly for kustomize auto-build
--dry-runprint Docker, kubectl, object-storage, or platform CLI plans without remote side effects

Interactive Mode

one deploy is not a full wizard, but TTY mode can ask for a few missing values:

  • Kustomize deploys need an image version. When --build-version is omitted, One CLI can use the same version picker as one container build.
  • Cloudflare deploys can ask for API token / account ID and save a default profile when no usable profile exists and --profile was not passed.

Scripts, CI, and agents should pass --profile, --env, and --build-version explicitly, then use --dry-run to inspect the plan.

Backends

backendproject typebehavior
kustomizeAPIs, SSR apps, container workloadsauto-builds and pushes the image, syncs the overlay, then runs kubectl apply -k
aws-s3 / aliyun-oss / tencent-cos / minio / rustfs / r2static sitesbuilds output, ensures the bucket, uploads through S3-compatible APIs
vercelhosted frontenddeploys through Vercel
cloudflareCloudflare Workersruns wrangler deploy
edgeoneEdgeOne Pagesruns edgeone pages deploy

Environment mapping

backendprod or emptyother env names
kustomizekustomize/overlays/prodkustomize/overlays/<env>
vercelproduction deploypreview deploy
cloudflarewrangler deploywrangler deploy --env=<env>
edgeoneproduction deploypreview deploy
S3-compatibledeploy target unchangeddeploy target unchanged; only build-time env changes

--env must exist in one.manifest.json#environments.names.

Profile resolution

  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 files never store local profile names. Bind one locally with one configure use <pair> --profile <name> --workspace, or add --project <name|path> for a single project.

Examples

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

Output schemas

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

Common errors

codefix
BACKEND_NOT_ENABLEDchoose a deploy-enabled template or add projects[].domains.deploy
PROFILE_NOT_FOUNDrun one configure list deploy/<backend>
PROFILE_NONE_CONFIGUREDrun one configure add deploy/<backend> <name> --use
ENV_UNKNOWN_ENVIRONMENTadd the env to manifest.environments.names or use an existing name
REGISTRY_CREDENTIAL_MISSINGconfigure container/docker before kustomize auto-build

Next