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. The first deployment chooses a compatible target and local connection; later runs reuse that project setup.

Usage

one deploy [project] [--provider <target>] [--profile <connection>] [--env <env>] [--dry-run]

Options

optionpurpose
positional projectdeploy one project by manifest name or relativeDir
-p, `--project <namepath>`
--provider <target>explicit first-deploy target for automation
--profile <name>one-shot local-connection 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

For an unconfigured project, TTY mode asks in this order:

  1. Project (when omitted)
  2. Deployment-target category
  3. A compatible service already implemented by this build
  4. Whether to configure a missing local connection now or later

"Configure later" exits 0, does not modify the workspace, and prints the exact recovery command. Scripts use one deploy <project> --provider <target> --profile <connection>.

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 web --env staging --dry-run
one deploy api --provider kustomize --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_ENABLEDselect a project and explicit target in non-interactive calls
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