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.
This commit is contained in:
@@ -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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user