Runner: host-directory job workspace (bind_workdir) so the e2e compose stack can bind-mount the checkout
ci / frontend (push) Successful in 10m10s
ci / server (push) Successful in 12m54s
ci / e2e (push) Failing after 43s
ci / image (push) Failing after 2m57s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
2026-10-16 10:29:47 -06:00
co-authored by Claude Fable 5.1
parent 0df0ea62e9
commit c5b0c11c0c
3 changed files with 18 additions and 9 deletions
+7 -4
View File
@@ -11,15 +11,18 @@ the `spencerm` user through the Docker socket. No sudo is needed.
(Ubuntu 24.04 with git, node, python 3.12, docker and compose).
- Every job of ci.yml runs in a fresh job container from that image. The server job's PostgreSQL service
container and the e2e job's compose stack (postgres, migrate, app, worker, the Samba DC, Playwright) are
started through the runner's Docker proxy on docker-1's daemon. The proxy maps the job workspace so the
compose bind mounts (`deploy/postgres/initdb`, `tests/e2e`, the CI secrets) resolve, and it removes what
the job started when the job ends.
started on docker-1's daemon through the socket. The job workspace is a host directory
(`~/gitea/runner/work/<task>/spencerm/PacketStation`, `container.bind_workdir`) mounted into the job
container at that same path, so the compose bind mounts (`deploy/postgres/initdb`, `tests/e2e`, the CI
secrets) resolve on the host. A Docker-volume workspace does not work here: the first run failed with
"bind source path does not exist". The runner removes what the job started when the job ends; the
workflow also runs `down -v` itself.
- Capacity 2: server and frontend run at the same time; e2e waits for both.
## Install (once)
```bash
mkdir -p ~/gitea/runner/data
mkdir -p ~/gitea/runner/data ~/gitea/runner/work
cp deploy/runner/compose.yaml ~/gitea/runner/
cp deploy/runner/config.yaml ~/gitea/runner/data/
cd ~/gitea/runner