Deploy services independently by changed paths
This commit is contained in:
1 parent
2277a2e9ac
commit
1ba47e4d22
18 files changed
+1462
-894
No files matched your search
@@ -46,8 +46,9 @@ Retired scripts live in `old/` (reference only) and `.AGENTTRASH/`.
|
||||
- `dankserver/` — compose.yaml + Caddyfile + .env.example for the media stack
|
||||
- `dankclaw/` — compose.yaml + Caddyfile + .env.example for the AI stack
|
||||
- `shared/` — homepage, Prometheus, Loki, Alloy, SearXNG configs
|
||||
- `scripts/` — `deploy.sh` (unified deployer), LLM serve scripts, systemd
|
||||
units, env tunables, bench harnesses
|
||||
- `scripts/` — `deploy.sh`, `deploy-plan.py`, and `deploy-remote.sh`
|
||||
(service-scoped deployer), LLM serve scripts, systemd units, env tunables,
|
||||
and bench harnesses
|
||||
- `old/` — retired PP/NPU-era LLM scripts (reference only)
|
||||
- `docs/` — knowledge base (Obsidian vault). `docs/LLM/` is the LLM fleet
|
||||
- `tests/` — bats test suite
|
||||
@@ -92,20 +93,28 @@ All edits flow through git. Do not edit files on the remote machine directly.
|
||||
4. **Run the tests** — `./tests/run.sh` must pass
|
||||
5. **Commit and push** — push to origin (Gitea on Dankclaw)
|
||||
6. **Pull on the target** — `git pull` on the remote machine
|
||||
7. **Restart** — `scripts/deploy.sh` pulls, restarts the stack and the LLM
|
||||
service, and checks health
|
||||
7. **Deploy** — `scripts/deploy.sh` pulls, plans, and dispatches only the
|
||||
changed service(s), then checks the selected service health
|
||||
|
||||
## Deployment
|
||||
|
||||
Use `scripts/deploy.sh` to deploy committed changes to a target. One script
|
||||
covers both workloads per host: the podman stack and the LLM service.
|
||||
Use `scripts/deploy.sh` to deploy committed changes to a target. The planner
|
||||
maps changed paths to individual services; the remote runner restarts only the
|
||||
selected service and records its successful revision outside the checkout.
|
||||
|
||||
```
|
||||
./scripts/deploy.sh dankclaw # AI stack + frank-default-large (:7770)
|
||||
./scripts/deploy.sh dankserver # media stack + frank-default-small (:7770)
|
||||
./scripts/deploy.sh dankclaw --dry-run # preview without changes
|
||||
./scripts/deploy.sh dankclaw
|
||||
./scripts/deploy.sh dankserver
|
||||
./scripts/deploy.sh dankclaw --service searxng
|
||||
./scripts/deploy.sh dankserver --service frank-default-small
|
||||
./scripts/deploy.sh dankclaw --dry-run
|
||||
```
|
||||
|
||||
A documentation-only change is a no-op. The LLM services are selected only by
|
||||
their own unit/env/serve files or the shared chat template, so unrelated
|
||||
container changes cannot interrupt inference. `frank-default-npu` is relink-only
|
||||
when explicitly selected.
|
||||
|
||||
Set `FRANK_SUDO_PW` for headless runs on a host without passwordless sudo
|
||||
(remote sudo reads it from stdin via `sudo -S`). The value is never stored
|
||||
in this repo.
|
||||
@@ -115,10 +124,10 @@ graph LR
|
||||
A[Edit locally] --> B[Tests pass]
|
||||
B --> C[Commit]
|
||||
C --> D[Push to origin]
|
||||
D --> E[deploy.sh: pull on target]
|
||||
E --> F[restart podman stack]
|
||||
F --> G[relink + restart LLM unit]
|
||||
G --> H[health: homepage + LLM]
|
||||
D --> E[deploy.sh computes service plan]
|
||||
E --> F[Target pulls with ff-only]
|
||||
F --> G[deploy-remote.sh dispatches selected service]
|
||||
G --> H[Per-service health check]
|
||||
```
|
||||
|
||||
## Testing
|
||||
@@ -133,8 +142,8 @@ development machine.
|
||||
Test seams: compose validity, env consistency (no leaked secrets), Caddyfile
|
||||
validity, quadlet units, docs completeness, script syntax (all of `scripts/`,
|
||||
including the LLM serve scripts), LLM unit integrity (units point at files in
|
||||
this repo), LLM secret hygiene, deployment flow. See
|
||||
[docs/Architecture/Testing Policy.md](docs/Architecture/Testing%20Policy.md).
|
||||
this repo), LLM secret hygiene, deployment flow, and service-scoped deployment
|
||||
planning/dispatch. See [docs/Architecture/Testing Policy.md](docs/Architecture/Testing%20Policy.md).
|
||||
|
||||
## Secret Rules
|
||||
|
||||
@@ -387,7 +396,7 @@ Direct edits on the remote drift from version control. Future agents will not
|
||||
know what changed. Git is the single source of truth. The two workloads share
|
||||
two hosts, one Caddy, and one Gitea. One repo keeps them in one history.
|
||||
|
||||
> User request → Fetch from remote → Commit here → Edit → Test → Commit → Push → Pull on remote → Deploy + restart
|
||||
> User request → Fetch from remote → Commit here → Edit → Test → Commit → Push → Pull on remote → Dispatch changed service(s) → Health
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -396,7 +405,7 @@ two hosts, one Caddy, and one Gitea. One repo keeps them in one history.
|
||||
| Editing a compose/Caddyfile/serve script | **Work through git** — fetch, commit, edit, test, push, pull, deploy. Never edit on the remote directly. |
|
||||
| Config exists only on remote | **Pull it into the repo first** — commit the fetched version (redacted) before making changes. |
|
||||
| Unstaged local changes | **Commit or discard** — check `git status` before starting work. Ask the user if unsure. |
|
||||
| Deploying a committed change | **Run `scripts/deploy.sh <target>`** — it pushes, pulls on the target, restarts the stack and the LLM service, and checks both health endpoints. See [docs/LLM/deployment.md](docs/LLM/deployment.md). |
|
||||
| Deploying a committed change | **Run `scripts/deploy.sh <target>`** — it pushes, pulls with fast-forward-only, plans changed paths, dispatches selected services, and checks their health. See [docs/LLM/deployment.md](docs/LLM/deployment.md). |
|
||||
| Benchmarking | **Stop the service first** — scratch port, restart, verify health. See the Benchmarking Policy above. |
|
||||
| Deleting a file | **Move it to trash** — `.AGENTTRASH/` (in-repo) or `~/.AGENTTRASH/YYYYMMDD-topic`. Never `rm`. |
|
||||
| Tests exist | **Run them** — verify tests pass after every change. Do not commit failing tests. |
|
||||
|
||||
Reference in new issue
Block a user