aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/DEPLOY.md17
-rw-r--r--docs/PROTOCOL.md5
-rw-r--r--docs/STATE.md4
3 files changed, 24 insertions, 2 deletions
diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md
index 8862fab..2964a19 100644
--- a/docs/DEPLOY.md
+++ b/docs/DEPLOY.md
@@ -50,6 +50,23 @@ to touch an already initialized database. Subsequent `scripts/deploy.sh`
runs update the image, tag and compose file, restart the daemon and wait for
the healthcheck.
+## Fast iteration (`--dev`)
+
+Normal deploys build an image and recreate the container. While developing,
+`scripts/deploy.sh --dev` skips the image entirely:
+
+- the gate (`make` + `make test`) still runs locally,
+- on an architecture mismatch the binaries are cross-compiled here
+ (`deploy/Dockerfile.cross`, ~20 s on a PC),
+- the binaries are copied into the running container with `docker cp`,
+- the daemon is reloaded with `SIGHUP`, which re-execs the binary in place
+ (in-memory sessions are lost, clients reconnect),
+- the version the daemon reports is verified against the tag.
+
+No image is built and the container is not recreated; a later normal deploy
+replaces the copied binaries. Use a descriptive tag, e.g.
+`scripts/deploy.sh --dev v0.2.0-rc1`.
+
## Deploying upgrades
```sh
diff --git a/docs/PROTOCOL.md b/docs/PROTOCOL.md
index f282691..1baf607 100644
--- a/docs/PROTOCOL.md
+++ b/docs/PROTOCOL.md
@@ -488,4 +488,7 @@ beyond the session and calls nothing but public commands.
| `allow_org_create` | `true` | any user may create an org |
Container deployments mount the socket directory, database directory, backup
-and export directories as volumes; the daemon is otherwise stateless.
+and export directories as volumes; the daemon is otherwise stateless. On
+`SIGHUP` the daemon closes its listeners and database and re-executes its own
+binary in place (used by `scripts/deploy.sh --dev`); in-memory sessions are
+reset and clients reconnect.
diff --git a/docs/STATE.md b/docs/STATE.md
index 3cbe448..458833e 100644
--- a/docs/STATE.md
+++ b/docs/STATE.md
@@ -65,7 +65,9 @@ server/protocol/ledger only.
come from a lego sidecar using INWX DNS-01 (`compose.yaml`). Externals
get accounts/roles/tokens, never VPN access. `scripts/deploy.sh` builds
locally and ships over SSH, or builds on the host when architectures
- differ.
+ differ. `scripts/deploy.sh --dev` cross-compiles the binaries here and
+ hot-reloads the daemon (SIGHUP re-exec via `docker cp`), skipping the
+ image build and container recreate.
## Pending decisions