Commit Graph
2 Commits
Author SHA1 Message Date
Omar Sobh 8f29cf8e44 deploy(gw-04): run the timer as a dedicated clawmates user under /opt
ci / gates (push) Successful in 6s
ci / frontend (push) Successful in 37s
ci / e2e (push) Failing after 15s
ci / publish (push) Successful in 21s
ci / rust (push) Successful in 2m57s
Move the running stack off root ownership. The systemd service now runs
as User=clawmates:clawmates with WorkingDirectory=/opt/clawmates, and the
script's COMPOSE_DIR default follows. This closes the "rootful compose
stack" ask from the original ship-readiness audit — deploys no longer
require any part of the pipeline to run as root beyond docker access
(the clawmates user gets that via the docker group).

Docker-managed volumes (pgdata, broker_run, broker_key, brains, filedata)
stay put; the compose project name is unchanged so docker resolves them
to the same physical volumes. The old /root/clawmates directory stays in
place as an emergency rollback for a week, then gets removed as follow-up.
2026-07-05 19:39:08 -07:00
Omar Sobh 4480c750bf build+deploy: reproducible pipeline via Gitea Actions + gw-04 image-watcher
ci / gates (pull_request) Successful in 1m3s
ci / frontend (pull_request) Successful in 27s
ci / rust (pull_request) Failing after 2m44s
ci / e2e (pull_request) Has been skipped
ci / publish (pull_request) Has been skipped
Adds a `publish` job to ci.yml that fires only on green pushes to main. It
builds broker, server, and frontend from images/*.Dockerfile, tags each with
:main-<sha> + :latest, and pushes to the fleet registry at
redclaw-web-01:5000 (via its Tailscale IP 100.94.185.103, which the daemons
already trust in insecure-registries).

Adds a small systemd oneshot + 1-minute timer for gw-04 that polls :latest
of each service, pulls on drift, retags to the un-prefixed name the current
compose file uses, and rolls only the changed services. The retag keeps
/root/clawmates/docker-compose.yml unchanged for now — a follow-up can
migrate the compose file to registry-prefixed names once we're confident.

End-to-end: push to main -> tests -> images pushed -> gw-04 timer pulls
within ~1 min -> prod updated. Rollback = docker tag <old-sha> :latest and
`docker compose up -d`.
2026-07-05 08:41:40 -07:00