Files
sand-boxer/docs/runbooks/profile-compose-e2e.md
tegwick 939c4e1aff Fix SSH auth: respect ~/.ssh/config instead of defaulting to root
CoulombCore (92.205.130.254) authenticates as tegwick via id_ops in
ssh config, not root. Omit SANDBOXER_SSH_USER to let OpenSSH apply config;
set SANDBOXER_SSH_USER only to override.
2026-06-23 14:16:16 +02:00

91 lines
2.2 KiB
Markdown

# Runbook: profile.compose-e2e
Provision a compose-based e2e sandbox via `ext.compose-ssh` (e2e-framework lineage).
## Prerequisites
**Workstation**
- `uv`, `ssh`, `rsync`
- sand-boxer installed: `make setup`
**Remote host** (CoulombCore or sandboxer01)
- SSH access (`SANDBOXER_HOST` or `--host`)
- Docker + compose plugin
- Sufficient disk for images
```bash
export SANDBOXER_HOST=coulombcore # or 92.205.130.254
# Omit SANDBOXER_SSH_USER to use ~/.ssh/config (CoulombCore: tegwick + id_ops)
# export SANDBOXER_SSH_USER=tegwick # only if not in ssh config
# export SANDBOXER_SSH_KEY=~/.ssh/id_ops # only to override config
```
## Create
Target repo must contain `e2e/e2e.yml` (for compose file path) or a
`docker-compose*.yml` at repo root.
```bash
sandboxer create \
--profile profile.compose-e2e \
--input repo=/path/to/repo \
--actor adm \
--project sand-boxer
```
Confirm `state: ready` and note `reachability.ssh`, `reachability.remote_dir`,
and `reachability.compose_project`.
## Manual readiness check
sand-boxer confirms compose services are running (not HTTP health — that is
wise-validator's job):
```bash
ssh $SANDBOXER_SSH_USER@$SANDBOXER_HOST \
'docker compose -p <compose_project> -f <remote_dir>/<compose_file> ps'
```
## Destroy
```bash
sandboxer destroy <sandbox_id>
```
Verify cleanup:
```bash
ssh $SANDBOXER_SSH_USER@$SANDBOXER_HOST 'docker compose ls'
ssh $SANDBOXER_SSH_USER@$SANDBOXER_HOST 'ls /tmp/sandboxer/'
```
## Compatibility with legacy `make e2e`
Interim callers in `the-custodian` should migrate to sand-boxer for
provision/teardown only. Test execution remains in wise-validator (SAND-WP-0003).
| Legacy | sand-boxer |
|--------|------------|
| `make e2e REPO=foo` (full pipeline) | `sandboxer create` + wise-validator run |
| rsync + compose up | `ext.compose-ssh` provision |
| compose down + dir removal | `sandboxer destroy` |
## Troubleshooting
**Provision fails — no compose file**
Ensure repo has `e2e/e2e.yml` with `compose_file` or a root `docker-compose*.yml`.
**Leftover compose projects**
```bash
ssh $SANDBOXER_HOST 'docker compose -p sbx-e2e-<id> down -v; rm -rf /tmp/sandboxer/<id>'
```
**Skip State Hub events (local debug)**
```bash
export SANDBOXER_NO_STATE_HUB=1
```