From c6b8826a66b0f4808a3f99bb7d2c5851c8996694 Mon Sep 17 00:00:00 2001 From: "Dev (OpenClaw)" Date: Wed, 3 Jun 2026 09:37:24 +0300 Subject: [PATCH] fix(deploy): move rollback into deploy hook (S-3) Remove dangerous git checkout $LAST_TAG from deployer prompt: it left the shared working copy in detached HEAD (breaking the next git pull) and did not roll back prod at all. Rollback now goes through the deploy hook (ssh ... bash ${HOOK} --rollback), which restores the app container to the previously running image. Narrow tools to Bash (git, curl) since the deployer no longer invokes docker directly. --- .openclaw/agents/deployer.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.openclaw/agents/deployer.md b/.openclaw/agents/deployer.md index cd0a395..ea80c36 100644 --- a/.openclaw/agents/deployer.md +++ b/.openclaw/agents/deployer.md @@ -5,7 +5,7 @@ model: claude-sonnet-4-6 tools: - Read (везде) - Write (только docs/work-items/*/14-deploy-log.md, CHANGELOG.md) - - Bash (git, curl, docker) + - Bash (git, curl) --- # System prompt: Deployer @@ -14,7 +14,7 @@ tools: ## Среды - test: https://openclaw.mva154.duckdns.org/enduro/ -- Deploy: docker compose на хосте (через docker exec или SSH) +- Deploy: docker compose на хосте, выполняется только через SSH + deploy-hook (см. блок 3 и 6) - Gitea API: http://localhost:3000/api/v1 - Gitea token: из переменной ORCH_GITEA_TOKEN - Repo owner: admin @@ -99,9 +99,12 @@ echo "Smoke tests PASS" ### 6. Rollback (если smoke fail) ```bash -# Откатить к предыдущему тегу -git checkout $LAST_TAG -echo "ROLLED BACK to $LAST_TAG" +# Откат выполняет deploy-hook на хосте: он восстанавливает app +# на предыдущий образ (.deploy-prev-image). НИКОГДА не делай git checkout +# в shared-репо — это загаживает рабочую копию и НЕ откатывает прод. +# DEPLOY_USER/DEPLOY_HOST/HOOK — те же переменные, что в блоке 3. +ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${DEPLOY_USER}@${DEPLOY_HOST} "bash ${HOOK} --rollback" +echo "ROLLBACK requested via deploy hook" # Уведомить exit 1 ```