refactor: Extract deploy logic to castle-core and add deploy API endpoint
- Extract all deploy logic from CLI into castle-core/deploy.py as a reusable deploy() function
* Resolves services/jobs to DeployedComponents
* Generates systemd units and Caddyfile
* Copies frontend assets and reloads systemd
* Returns DeployResult with deployed count and messages
- Simplify CLI deploy command to a thin wrapper calling castle_core.deploy()
- Add POST /deploy endpoint to castle-api for remote deployment management
* Supports optional {name} body param to deploy one or all services
* Returns deployment result as JSON
- Register deploy router in castle-api main.py
- Update README with new deploy endpoint documentation
This enables full remote management: build, test, lint, and deploy any castle
node over HTTP (e.g. POST http://node:9000/api/deploy)
This commit is contained in:
@@ -196,6 +196,8 @@ When enabled, the API publishes the node's registry to `castle/{hostname}/regist
|
||||
| `GET /gateway/caddyfile` | Generated Caddyfile content |
|
||||
| `POST /gateway/reload` | Regenerate Caddyfile and reload Caddy |
|
||||
| `GET /status` | Live health for all services |
|
||||
| **Deploy** | |
|
||||
| `POST /deploy` | Deploy all services and jobs (spec to runtime) |
|
||||
| **Config** | |
|
||||
| `GET /config` | Read castle.yaml |
|
||||
| `PUT /config` | Write castle.yaml |
|
||||
|
||||
Reference in New Issue
Block a user