hull workspace install
Synopsis
hull workspace install installs every member declared in
hull-workspace.yaml, in dependency order. A member starts only after
everything it depends on has finished. Members that do not depend on each other
share a level and can run concurrently up to --parallel.
When to use it
- To bring a whole workspace up from nothing in one command.
- When you want dependencies installed and ready before their dependents start
— add
--health-gateto wait for pods, not just for the apply to return. - When a partial rollout is unacceptable — add
--atomic-workspaceto undo every successful member if any member fails.
What happens
- Reads
hull-workspace.yamlfrom--dir(default.) and sorts the members into dependency levels. - Installs level 0 first. Within a level, up to
--parallelmembers install at once; the default of1installs them one at a time. - Waits for the whole level to finish before starting the next. With
--health-gate, it also waits for every pod of that level to be Ready. - Advances level by level until every member is installed.
- On failure, stops unless
--continue-on-erroris set; with--atomic-workspace, uninstalls every member that had already succeeded.
Each member is installed the same way hull install would install
it, using the member’s namespace and profile.
Usage
hull workspace install [flags]
Flags
| Flag | Type | Default | Description |
|---|---|---|---|
--dir |
string | . |
Directory containing hull-workspace.yaml. Point it elsewhere to install a workspace in another directory. |
--parallel |
int | 1 |
Maximum members to install at once within a level. Raise it to install independent members concurrently; 1 keeps them sequential. |
--health-gate |
bool | false |
Between levels, wait until every pod of the finished level is Ready, not just applied — so dependents start against a serving dependency. |
--health-gate-timeout |
duration | 5m0s |
How long each level’s health-gate waits before giving up. |
--continue-on-error |
bool | false |
Keep installing the remaining members after one fails, then report all failures at the end. |
--atomic-workspace |
bool | false |
If any member fails, uninstall every member that already succeeded. Mutually exclusive with --continue-on-error. |
--dry-run |
bool | false |
Render every member locally and skip applying anything to the cluster. |
--progress |
bool | false |
Print live lines as each member starts and finishes, plus a final summary. |
Inherits the global flags.
Worked example
INPUT — hull-workspace.yaml with two members, where api depends on
postgres:
apiVersion: hull/v1
defaults:
namespace: apps
members:
- name: postgres
path: ./postgres
- name: api
path: ./api
dependsOn: [postgres]
Run it with live progress:
hull workspace install --progress
OUTPUT:
workspace: 2 members across 2 level(s), parallel=1, op=install
[level 0/1] 1 member(s) starting concurrently
→ postgres (ns=apps) start
✓ postgres done in 4.1s
[level 1/1] 1 member(s) starting concurrently
→ api (ns=apps) start
✓ api done in 2.7s
All 2 member(s) succeeded.
postgres is the only member at level 0, so it installs first; api waits at
level 1 until postgres finishes, matching its dependsOn: [postgres]. Both
land in ns=apps from defaults.namespace. Without --progress, a fully
successful run prints nothing; failures are always reported.
See also
workspace— the workspace indexworkspace plan— preview the order firstworkspace uninstall— tear the workspace back downinstall— the single-release analogue