feat(flows): redeploy_all flow + fix MCP-worker cache-bust

Legt de volledige stack-redeploy vast als één flow: scrum4me-web
(pull/migrate/build/restart) gevolgd door de MCP-worker.

Onderweg een echte bug gevonden en gefixt: update_mcp_worker.yml deed
`docker_compose_build worker-idea` zónder cache-bust. De worker-idea
Dockerfile clonet scrum4me-mcp van GitHub in een aparte laag; zolang
MCP_GIT_REF gelijk blijft ('main') hergebruikt Docker die laag, dus
nieuwe MCP-commits werden NIET opgepikt. Een schijnbaar geslaagde
rebuild draaide stilletjes op oude MCP-code.

Wijzigingen:
- commands.yml.example: nieuw command docker_compose_build_worker_fresh
  dat via `sh -c` MCP_CACHE_BUST=$(date +%s) meegeeft — invalideert de
  clone-laag zodat de laatste MCP-code wordt gepulld
- update_mcp_worker.yml: gebruikt nu de fresh-build; pullt ook
  scrum4me-mcp lokaal (on_failure: continue, sync-only)
- redeploy_all.yml: nieuwe gecombineerde flow (16 stappen, web → worker)
- app/flows/redeploy-all/: UI-pagina + panel, zelfde patroon als de
  bestaande flow-pagina's
- app/flows/page.tsx: Redeploy All bovenaan de flows-lijst

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-14 12:05:39 +02:00
parent e0c2536a8c
commit 68c4d037cf
6 changed files with 285 additions and 9 deletions

View file

@ -2,15 +2,21 @@
# Copy to /etc/ops-agent/flows/update_mcp_worker.yml on the host.
#
# Steps:
# 1. Show current git status (informational)
# 2. Fetch remote refs
# 3. Fast-forward pull (aborts if working tree is dirty)
# 4. Rebuild the Docker image
# 5. Recreate the container in detached mode (force-recreate picks up new image)
# 6. Wait for worker pre-flight to pass (checks /var/log/agent/current)
# 1. Show current git status of scrum4me-docker (informational)
# 2. Fetch remote refs for scrum4me-docker
# 3. Fast-forward pull scrum4me-docker (aborts if working tree is dirty)
# 4. Fast-forward pull scrum4me-mcp — sync van de lokale repo. De image
# cloned MCP zelf van GitHub, dus dit is alleen lokale referentie;
# on_failure: continue zodat een dirty mcp-tree de deploy niet blokkeert.
# 5. Rebuild the worker image MET cache-bust. Een gewone build hergebruikt
# de scrum4me-mcp clone-laag (MCP_GIT_REF blijft 'main'), dus nieuwe
# MCP-commits worden gemist. docker_compose_build_worker_fresh forceert
# een verse clone via MCP_CACHE_BUST.
# 6. Recreate the container (force-recreate picks up the new image)
# 7. Wait for worker pre-flight to pass (checks /var/log/agent/current)
name: Update MCP Worker
description: Pull latest code, rebuild Docker image, and restart the MCP worker service
description: Pull latest code, rebuild the worker image with a fresh scrum4me-mcp clone, and recreate the worker container
steps:
- command_key: git_status
args: ["/srv/scrum4me/repos/scrum4me-docker"]
@ -24,8 +30,11 @@ steps:
args: ["/srv/scrum4me/repos/scrum4me-docker"]
on_failure: abort
- command_key: docker_compose_build
args: ["worker-idea"]
- command_key: git_pull
args: ["/srv/scrum4me/repos/scrum4me-mcp"]
on_failure: continue
- command_key: docker_compose_build_worker_fresh
on_failure: abort
- command_key: docker_compose_up_recreate