ubx ship is the primary deploy command. It compiles XCL, builds the IR, invokes the plugin’s Compile and Apply RPCs, streams progress events, and writes an apply record.
Usage
Flags
| Flag | Description |
|---|---|
--yes / -y | Skip confirmation prompt (required in CI) |
--all | Deploy all stacks in topology order |
--target <binding> | Limit to specific resource bindings (repeatable) |
Examples
What happens
- Compile — runs the XCL pipeline, generates code (
__main__.py, etc.) - Typecheck — validates all files
- IR — builds the IR JSON
- Plugin Compile — invokes plugin’s
CompileRPC, getsartifact_uri - Confirmation — prompts unless
--yes/-y - Plugin Apply — invokes plugin’s
ApplyRPC, streams progress events - Apply record — writes
.ubx/last-apply.jsonon success
Progress output
Apply record
On success, ubx writes.ubx/last-apply.json:
ubx terminate reads this record to skip recompilation.
Backend URL resolution
ubx resolves the backend URL in priority order:backend {}block in the stack IRPULUMI_BACKEND_URLenvironment variable- Default:
file://<stack-dir>/.ubx/state/
local→file://<dir>/.ubx/state/s3→s3://bucket/keygcs→gs://bucketazblob→azblob://containerpulumi→https://api.pulumi.com
Hooks
Before/after hooks run at these points:Exit codes
| Code | Meaning |
|---|---|
0 | Deploy succeeded |
1 | Compile, typecheck, or deploy error; user cancelled |

